Javascript - 栈 和 单链表

最近在重温数据结构,于是写了一些代码玩玩,都是很初级的,表喷各位。。。。

function Stack() {
this.dataStore = [];
this.top = 0;
} Stack.prototype = {
length: function () {
return this.top;
}, push: function (element) {
this.dataStore[this.top++] = element;
return this.top;
}, pop: function () {
return this.dataStore[--this.top];
}, peek: function () {
return this.dataStore[this.top - 1];
}, clear: function () {
return this.top = 0;
}
}; var stack = new Stack();
console.log("length:" + stack.length());
stack.push("huangjacky");
stack.push("fiend");
console.log("length:" + stack.length());
while (stack.length() > 0) {
var s = stack.pop();
console.log("element:" + s);
}
console.log("length:" + stack.length()); function Node(element) {
this.element = element;
this.next = null;
} function LinkList() {
this.head = new Node("head");
}
LinkList.prototype = {
insert: function (element, after) {
var s = new Node(element);
if (after == undefined) { //如果没有指定after,那么就直接插入到链表的最前面
s.next = this.head.next;
this.head.next = s;
return true;
} else {
var node = this.head;
while (node != null) {
if (node.element == after) {
s.next = node.next;
node.next = s;
return true;
}
node = node.next;
}
}
return false;
}, remove: function (element) {
var node = this.head;
var preNode = null;
while (node != null) {
if (node.element == element) {
preNode.next = node.next;
return true;
}
preNode = node;
node = node.next;
}
return false;
}, find: function (element) {
var node = this.head;
while (node != null) {
if (node.element == element) {
break;
}
node = node.next;
}
return node;
}, toString: function () {
var s = "";
var node = this.head;
while (node != null) {
if (node.next == null) {
s += node.element;
} else {
s += node.element + " --> ";
}
node = node.next;
}
return s;
}
};
var l = new LinkList();
l.insert("huangjacky");
l.insert("fiend", "huangjacky");
l.insert("jackyhuang", "fiend");
l.insert("abc");
var s = l.find("huangjacky");
if (s) {
console.log("next to huangjacky is :" + s.next.element);
}
l.remove("fiend");
console.log("linklist is :" + l.toString());

  

上一篇:[NYIST737]石子合并(一)(区间dp)


下一篇:P6 EPPM Installation and Configuration Guide 16 R1 April 2016