概述
双向链表可以往前寻找数据项:单向链表寻值时若错过了值,需要从头开始。
双向链表多了一个tail值,尾巴;
***向双向链表插入一个值:
this.insert=function(position, element){
if(position>=0&&position<this.length){
var node=new Node(element); // 先插入一个值,马上再把这个值和链表连接在一起;
var current=head;
previous;
var index=0;
if(position==0) //插入第一个位置
{
if(!head){ //如果列表为空
node=head;
node=tail;
}else{ // 如果列表不为空
node.next=current;
current.prev=node;//新增加的
head=node;}
}else if(position==length){ //插入最后一个位置
current=tail;
current.next=node;
node.prev=current;
tail=head;
}else{ //插入位置在中间
while(index<position){
previous=current;
current=current.next;
index++;
}
node.next=current;
previouds.next=node;
current.prev=node; //新增的
node.prev=previous; //新增的
}}
lenth++;
return true;
}else{
return false;
}};
***从任意位置移除值:
this.removeAt=function(position){
if(position>=0&&podition<length){
var current=head;
var index=0;
if(position===0){
head=current.next;
//如果只有一项,更新tail //新增的
if (length === 1){ // {2}
tail = null; } else {
head.prev = null; // {3}
}
}else if(position===length-1){
current=tail;
tail=current.prev;
tail.next = null; }
else{
while(index<position){
previous=current;
current=current.next;
index++}
previous.next=curren.next;
current.next.prev=previous; //此时current的值仍然是要被删除的值,还未曾改变,如果令current=current.next;则current值改变;
}
length--;
return current.element;
else{return null;}
}
最后
以上就是平常音响为你收集整理的双向链表DoublyLinkedList类的全部内容,希望文章能够帮你解决双向链表DoublyLinkedList类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复