下面是一个链表
一、用Javascript实现一个链表及基本功能
/**
*单链表的实现
**/
function LinkedList() {
//定义一个节点
var Node = function (element) {
this.element = element;
this.next = null;
}
var length = 0; // {2}
var head = null; // {3}
//节点追加
this.append = function(element){
var node = new Node(element),
current;
if(head==null){
head = node;
} else{
current = head;
//循环列表,直到找到最后一项
while(current.next){
current = current.next;
}
//找到最后一项,将其next赋为node,建立链接
current.next = node;
}
length++;//更新列表的长度
}
//删除节点
this.removeAt = function(position){
//检查越界值
if(position > -1 && position <length){
var current = head,
previous,
index = 0;
//移除第一项
if(position === 0){
head = current.next;
} else{
while(index++ < position){
previous = current;
current = current.next;
}
//将previous与current的下一项链接起来:跳过current,从而移除它
previous.next = current.next;
}
length--;
return current.element;
}else{
return null;
}
};
//指定位置插入一个节点
this.insert = function (position,element) {
if(position >= 0 && position <= length ){
var node = new Node(element),
current = head,
previous,
index = 0;
if(position === 0){
node.next = current;
head = node;
} else{
while(index++ < position){
previous = current;
current = current.next;
}
node.next = current;
previous.next = node;
}
length++;
return true;
} else{
return false;
}
}
this.toString = function () {
var current = head,
string = '';
while(current){
string = current.element;
current = current.next;
}
return string;
}
this.indexOf = function (element) {
var current = head,
index = -1;
while(current){
if(element === current.element){
return index;
}
index++;
current = current.next;
}
return -1;
}
this.remove = function(element){
var index = this.indexOf(element);
return this.removeAt(index);
}
this.isEmpty = function(){
return length === 0;
}
this.size = function(){
return length;
}
this.getHead = function() {
return head
}
}