js实现双向链表 双向追加、删除某元素的所有节点

思路:删除某元素的所有节点

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();

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值