循环链表

来源:互联网 发布:unity3d图文教程 编辑:程序博客网 时间:2024/06/05 21:08
public class Link {    public long lData;    public Link next;    public Link(long lData){        this.lData=lData;    }    public void displayLink(){        System.out.print(lData+" ");    }}
public class CircleList {    private Link current;    private int nItems;    public CircleList(){        current=null;    }    public void insert(long value){        Link newLink = new Link(value);        if(current==null){            current=newLink;            newLink.next=newLink;        }else{            newLink.next=current.next;            current.next=newLink;            current=newLink;//插入元素,current要移动要新元素        }        nItems++;    }    public long remove(){        long temp = current.next.lData;        if(current.next==current){            current=null;        }else{            current.next=current.next.next;        }        nItems--;        return temp;    }    public long peek(){        return current.next.lData;    }    public Link find(long value){        Link temp =current;        Link result=null;        if(current==null){            return result;        }        do{            step();//从current的下一个元素开始            if(current.lData==value){                result=current;                current=temp;//还原current到原来的位置,这样就不会打乱插入的顺序,current指向最后插入的元素            }        }while(current!=temp);//current到原来的位置,一周循环结束        return result;    }    public void step(){        if(current!=null){            current=current.next;// 调用step()方法后,顺序会被打乱        }    }    public void display(){        if(current!=null){            Link temp =current;            do{                step();// 从current的一下个开始显示                System.out.print(current.lData + " ");            }while(current!=temp);        }        System.out.println();    }    public boolean isEmpty(){        return (current==null);    }    public int size(){        return nItems;    }}
public class CircleListApp {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        CircleList theCircleList = new CircleList();        theCircleList.insert(10);        theCircleList.insert(20);        theCircleList.insert(40);        theCircleList.insert(30);        theCircleList.display();        System.out.println("最早插入的元素:"+theCircleList.peek());        Link link = theCircleList.find(40);        if(link!=null){            System.out.println("find 40");        }else{            System.out.println("Can't find 40");        }        long aLink = theCircleList.remove();        System.out.println("Deleted "+aLink);        theCircleList.display();    }}
0 0
原创粉丝点击