队列_双端链表实现

//链结点
public class Link {
    public long dData;
    public Link next;
    public Link(long dd) {
        dData=dd;    
    }
    public void displayLink() {
        System.out.print(dData+" ");
    }

}
public class FirstLastList {
        public Link first;
        public Link last;
        public FirstLastList() {
            first=null;
            last=null;
        }
        //是否为空
        public boolean isEmpty() {
            return first==null;//last也行。可以选其中一个
        }
        //从last节点位置处 插入
        public void insertLast(long dd) {
            Link newLink=new Link(dd);
            if(isEmpty()) {
                //如果是空的,first节点需要指向当前插入的节点
                first=newLink;
            }else
                last.next=newLink;
            last=newLink;
                
        }
        //从first节点处 删除
        public long deleteFirst() {
            long temp=first.dData;
            if(first.next==null) {
                //如果只有一个节点,需要将last为null
                last=null;
            }
            first=first.next;//改变头(如果只有一个节点,该操作也是null)
            return temp;
            
        }
        //显示所有数据
        public void displayList() {
            Link current=first;
            while(current!=null) {
                current.displayLink();
                current=current.next;
            }
            System.out.println();
        }




}
public class LinkQueue {
    private FirstLastList theList;
    public LinkQueue() {
        theList=new FirstLastList();
    }
    public boolean isEmpty() {
        return theList.isEmpty();
    }
    public void insert(long j) {
        theList.insertLast(j);
    }
    public long remove() {
        return theList.deleteFirst();
    }
    public void displayQueue() {
        System.out.print("QUeue(front-->rear):");
        theList.displayList();
    }

}
public class Test {

    public static void main(String[] args) {
        LinkQueue theQueue =new LinkQueue();
        theQueue.insert(20);
        theQueue.insert(40);
        theQueue.displayQueue();
        theQueue.insert(60);
        theQueue.insert(80);
        theQueue.displayQueue();
        theQueue.remove();
        theQueue.remove();
        theQueue.displayQueue();

    }

}

 

posted @ 2017-12-22 10:43  S-Mustard  阅读(220)  评论(0编辑  收藏  举报