双向链表

来源:互联网 发布:淘宝日本服装代购 编辑:程序博客网 时间:2024/06/05 08:15

在双端基础上
这里写图片描述这里写图片描述

//双向链表public class LinkList2 {    //车头    private Node first;    //车尾    private Node last;    //默认构造方法     public LinkList2(){        first=null;        last=null;    }    //插入一个节点,在头结点后进行插入    public void insertFirst (int value){        Node node = new Node(value);        if(isEmpty()){            last=node;        }else{            first.previous=node;        }        node.next=first;        first=node;        //注意先后步骤  //倒着插入    }    //删除一个结点,在头结点后进行删除    public Node deleteFirst(){        Node tmp = first;        if(first.next==null){            last = null;        }else{            first.next.previous=null;        }        first=tmp.next;         return tmp;    }    //删除结点,从尾部进行删除    public Node deleteLast(){        Node tmp = last;        if(first.next==null){            first = null;        }else{            last.previous.next=null;            last = last.previous;         }        return last;    }    //插入一个结点,从尾结点插入    public void insertLast(int value){        Node node = new Node (value);        if(isEmpty()){            first = node;        }else{            last.next=node;        }        node.previous=last;        last = node;    }    //显示方法    public void display(){        Node current = first;        while(current!=null){            current.display();            current = current.next;        }        System.out.println();    }    //查找方法    public Node find (int value){        Node current = first;        while(current.data!=value){            if(current.next==null){                return null;            }            current = current.next;        }        return current;    }    //删除方法,根据数据域进行删除    public Node delete(int value){        Node current = first;        while(current.data!=value){            if(current.next==null){                return null;            }            current = current.next;        }        if(current==first){        first = first.next;        }else{        current.previous.next=current.next;        }        return current;    }    //判断是否为空    public boolean isEmpty(){        return (first==null);    }}