開発環境
- OS X Yosemite - Apple (OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- SpiderMonkey (JavaScript engine)
Data Structures and Algorithms With Javascript (Michael McMillan(著)、O'Reilly Media)のChapter 3(Lists)、Exercises 2.(No. 2421)を解いてみる。
Exercises 2.(No. 2421)
JavaScript(Emacs)
var List = function () {
this.list_size = 0;
this.pos = 0;
this.data_store = [];
};
List.prototype.append = function (element) {
this.data_store[this.list_size] = element;
this.list_size += 1;
};
List.prototype.find = function (element) {
var i,
max;
for (i = 0, max = this.data_store.length; i < max; i += 1) {
if (this.data_store[i] === element) {
return i;
}
}
return -1;
};
List.prototype.remove = function (element) {
var found_at = this.find(element);
if (found_at > -1) {
this.data_store.splice(found_at, 1);
this.list_size -= 1;
return true;
}
return false;
};
List.prototype.length = function () {
return this.list_size;
};
List.prototype.toString = function () {
return this.data_store;
};
List.prototype.insert = function (element, after) {
var insert_pos = this.find(after);
if (insert_pos > -1) {
this.data_store.splice(insert_pos + 1, 0, element);
this.list_size += 1;
return true;
}
return false;
};
List.prototype.clear = function () {
this.data_store = [];
this.list_size = this.pos = 0;
};
List.prototype.contains = function (element) {
var i,
max;
for (i = 0, max = this.dataStore.length; i < max; i += 1) {
if(this.data_store[i] === element) {
return true;
}
}
return false;
}
List.prototype.moveTo = function (pos) {
this.pos = pos;
};
List.prototype.getElement = function () {
return this.data_store[this.pos];
};
List.prototype.previous = function () {
this.pos -= 1;
return this.data_store[this.pos];
};
List.prototype.next = function () {
var element = this.data_store[this.pos];
this.pos += 1;
return element;
};
List.prototype.hasNext = function () {
if (this.pos > this.list_size -1) {
return false;
}
return true;
};
List.prototype.hasPrevious = function () {
if (this.ps <= 0) {
return false;
} else {
return true;
}
};
List.prototype.front = function () {
this.pos = 0;
};
List.prototype.end = function () {
this.pos = this.list_size - 1;
};
List.prototype.currPos = function () {
return this.pos;
};
var insert = function (list, element) {
for (list.front(); list.hasNext();) {
if (list.next() <= element){
return false;
}
}
list.append(element);
return true;
},
strings = new List(),
nums = new List();
strings.append('js');
strings.append('c');
strings.append('scheme');
strings.append('python');
print(strings.toString());
insert(strings, 'JS');
insert(strings, 'z');
insert(strings, 'js');
insert(strings, 'jsjs');
print(strings.toString());
nums.append(1);
nums.append(9);
nums.append(3);
nums.append(5);
nums.append(7);
print(nums.toString());
insert(nums, 0);
insert(nums, 10);
insert(nums, 1);
insert(nums, 2);
print(nums.toString());
出力結果(Terminal, shell, SpiderMonkey)
$ js sample2.js
js,c,scheme,python
js,c,scheme,python,JS
1,9,3,5,7
1,9,3,5,7,0
$
0 コメント:
コメントを投稿