双向链表

来源:互联网 发布:mysql数据库恢复 编辑:程序博客网 时间:2024/05/16 00:50
public class Link {    public long dData;    public Link next;    public Link previous;    public Link(long dData){        this.dData=dData;    }    public void displayLink(){        System.out.print(dData+" ");    }}
public class DoubleLinkedList {    private Link first;    private Link last;    public DoubleLinkedList(){        first=null;        last=null;    }    public boolean isEmpty(){        return (first==null);    }    public void insertFirst(long dd){        Link newLink = new Link(dd);        if(isEmpty()){            last=newLink;        }else{            first.previous=newLink;        }        newLink.next=first;        first=newLink;    }    public void insertLast(long dd){        Link newLink=new Link(dd);        if(isEmpty()){            first=newLink;        }        else{            last.next=newLink;            newLink.previous=last;        }        last=newLink;    }    public Link deleteFirst(){//delete first link        Link temp =first;        if(first.next==null){//if only one items            last=null;        }else{            first.next.previous=null;        }        first=first.next;        return temp;    }    public Link deleteLast(){//delete last link        Link temp =last;        if(first.next==null){//if only one items            first=null;        }else{            last.previous.next=null;        }        last=last.previous;        return temp;    }    public boolean insertAfter(long key,long dd){        Link current =first;        while(current.dData!=key){            current=current.next;            if(current==null){                return false;//didn't find it             }        }        Link newLink = new Link(dd);        if(current==last){            newLink.next=null;            last=newLink;        }        else{            newLink.next=current.next;            current.next.previous=newLink;        }        newLink.previous=current;        current.next=newLink;        return true;    }    public Link deleteKey(long key){        Link current =first;        while(current.dData!=key){            current=current.next;            if(current==null)                return null;        }        if(current==first){            first=current.next;        }        else{            current.previous.next=current.next;        }        if(current==last){            last=current.previous;        }        else{            current.next.previous=current.previous;        }        return current;    }    public void displayForward(){        Link current=first;        while(current!=null){            current.displayLink();            current=current.next;        }        System.out.println("");    }    //遍历    public void displayBackward(){        Link current = last;//start at end        while(current!=null){            current.displayLink();            current=current.previous;        }        System.out.println("");    }    //insertAfter在某一特定元素后面插入}
public class DoubleLinkedApp {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        DoubleLinkedList theList = new DoubleLinkedList();        theList.insertFirst(22);        theList.insertFirst(44);        theList.insertFirst(66);        theList.insertLast(11);        theList.insertLast(33);        theList.insertLast(55);        theList.displayForward();        theList.displayBackward();        theList.deleteFirst();        theList.deleteLast();        theList.displayForward();        theList.insertAfter(22, 77);        theList.insertAfter(33, 88);        theList.displayForward();    }}
1 0
原创粉丝点击