思路:删除某元素的所有节点
1. 该元素有前驱和后继
2 该元素有前驱无后继
3.该元素有后继无前驱
4 该元素即无前驱也无后继
function deleteEle(ele){
var count=0;
var temp=this.head;
while(temp!=null){
if(temp.ele==ele && temp.pre!=null && temp.next!=null){
count++; // 待删除元素 有后继和前驱
temp.pre.next=temp.next;
temp.next.pre=temp.pre;
this.length--;
}
else if(temp.ele==ele && this.length>=2 && temp.next==null){
count++; // 待删除元素为 元素tail,有前驱 ,无后继
temp.pre.next=null;
this.tail=temp.pre;
this.length--;
}
else if(temp.ele==ele && this.length>1 && temp.pre==null){
// 待删除元素为 头部,且有后继元素,无前驱
count++;
this.head=temp.next;
this.length--;
}
else if(temp.ele==ele && this.length==1 ){
count++; //待删除元素为 头部,无后继,无前驱
this.head=null;
this.length--;
}
temp=temp.next;
}
return count;
}
function print(){
var current=this.head;
console.log("正向:")
while(current){
console.log(current.ele);
current=current.next;
}
}
function print2(){
var current=this.tail;
console.log("反向:");
while(current){
console.log(current.ele);
current=current.pre;
}
}
var l=new LinkList();
// l.prepend(3); l.prepend(4);l.prepend(5);
l.append(1);l.append(2);l.append(3);l.append(3);l.append(3);l.append(3);
// var test=l.findEle(3);
// console.log(test.ele);
var n=l.deleteEle(1);
console.log(n);
l.print();
// l.print2();