#Data Structure - Linked List @(Data Structure & Algorithm)
function Node(el){
this.el = el;
this.next = null;
}
function LList(){
this.head = new Node("head");
}
LList.prototype = {
constructor: LList,
find: function(el){
var node = this.head;
while (node.el !== el){
if (node.next === null)
return false;
node = node.next;
}
return node;
},
findPrev: function(el){
var node = this.head;
while (node.next.el !== el){
if (node.next === null)
return false;
node =node.next;
}
return node;
},
//最方便的插入方式,是指定插入点之前的元素
insert: function(el,prevEl){
var prevNode = this.find(prevEl);
if (prevNode){
var node = new Node(el);
node.next = prevNode.next;
prevNode.next = node;
} else
return false;
},
remove: function(el){
var prevNode = this.findPrev(el);
if (prevNode){
prevNode.next = prevNode.next.next;
return true;
} else
return false;
},
display: function(){
var node = this.head;
//最后一个元素的next是null
//注意下面的顺序
do {
node = node.next;
console.log(node.el);
} while (node.next !== null);
}
};
var arr = [1,2,3,4,5,6,7];
var l = new LList();
var prev = l.head.el;
for (var i = 0; i < arr.length; i++){
l.insert(arr[i],prev);
prev = arr[i];
}
l.display();
l.insert(8,7);
l.display();
l.remove(6);
l.display();