双向链表的实现


//创建自己的链表类
public class MylinkList {
    private Node first;
    private Node last;
    private Integer size=0;
    //在链表的最前面添加数据
    public void  addfirst(Object ele) {
        Node courrent = new Node(ele);
        if(size==0) {
            this.first=courrent;
            this.last =courrent;
        }else {
            courrent.Next=this.first;
            this.first.prev=courrent;
            this.first=courrent;
           }
        size++;
    }
    //在链表的最后面添加数据
    public void addlast(Object ele) {
        Node courrent = new Node(ele);
        if(size==0) {
            this.first=courrent;
            this.last = courrent;
        }else {
            courrent.prev=this.last;
            this.last.Next=courrent;
            this.last=courrent;
        }
        size++;
    }
    //在链表中查找数据
    public boolean check(Object ele) {
        Node node= this.first;
        for(int i=0;i<size;i++) {
            if(node.ele.equals(ele)) {
                return true;    
            }
            node=node.Next;
        }
        return false;    
    }
    //删除链表中的数据
    public void delete(Object ele) {
        Node node = this.first ;
        for(int i=0;i<size;i++) {
            if(node.ele.equals(ele)) {
                if(node==this.first) {
                    this.first.Next.prev=null;
                    this.first=this.first.Next;    
                }else if(node==this.last) {
                    this.last.prev.Next=null;
                    this.last=this.last.prev;    
                }else {
                node.Next.prev=node.prev;
                node.prev.Next=node.Next;
                }
                 size--;    
            }
            node=node.Next;
        }
        
    }
    //在链表中修改数据
    public void change(Object oldele,Object newele) {
        Node node = this.first ;
        for(int i=0;i<size;i++) {
            if(node.ele.equals(oldele)) {
                node.ele=newele;
                return;
            }
            node=node.Next;
        }
        System.out.println(oldele+"不存在链表中");
    }
    //链表的toString方法
    public String toString() {
        StringBuilder str = new StringBuilder(size*2+1);
        if(size==0) {
            str.append("[]");
        }else {
            Node node=this.first;
            str.append("[");
            for(int i=0;i<size;i++) {
                if(i!=size-1) {
                str.append(node.ele+",");
                node=node.Next;
                }else {
                str.append(node.ele+"]");
                }
            }
        }
        return str.toString();
    }
     class Node{
         Node prev;
         Node Next;
         Object ele;
         Node(Object ele){
             this.ele=ele;
         }
     }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值