1. 程式人生 > >隊列----java實現

隊列----java實現

last urn ram new uil param 鏈隊 let 存儲

FIFO:先進先出

存儲單元:

public class Node {
    /*
    元素有兩部分:
    元素
    下一個元素的引用
     */
    Object data;//數據域
    Node next; //指針域
    public Node(){}
    public Node(Object data,Node next){
        this.data=data;
        this.next=next;
    }
}

實現:

/**
 * Created by yaming 
 * 鏈式隊列---鏈式存儲實現
 */
public class
LinkQueue { private Node first;//隊列頭,可以刪除 private Node last;//隊列尾,可以插入 private int size; /** * 是否為空 * @return */ public boolean isEmpty(){ return size==0; } /** * 長度 * @return */ public int size(){ return size; } /** * 入隊 *
@param data * @return */ public boolean push(Object data){ Node node=new Node(data,null); //如果該鏈隊列還是空鏈隊列 if (first == null) { first = node; last = first;//只有一個節點,front、rear都指向該節點 } else { last.next = node;//讓尾節點的next指向新增的節點 last = node;//
以新節點作為新的尾節點 } size++; return true; } /** * 出隊 * @return */ public Object pull(){ Node node = first; first = first.next; node.next = null; size--; return node.data; } /** * 隊列尾元素 * @return */ public Object getLast(){ if(isEmpty()){ return null; } return last.data; } public Object getFirst(){ if(isEmpty()){ return null; } return first.data; } public void clear(){ first=null; last=null; size=0; } /** * 遍歷 * @return */ public String queue(){ if(isEmpty()){ return "[]"; }else { StringBuilder stringBuilder=new StringBuilder("["); for(Node current=first;current!=null;current=current.next){ stringBuilder.append(current.data.toString()+", "); } int length=stringBuilder.length(); return stringBuilder.delete(length-2,length).append("]").toString(); } } }

隊列----java實現