隊列----java實現
阿新 • • 發佈:2017-12-17
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 classLinkQueue { 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實現