2012_線性表之佇列
阿新 • • 發佈:2020-09-19
2.4 佇列
佇列是一種基於先進先出的資料結構, 是一種只能在一端進行插入, 在另一端進行刪除的特殊線性表, 它按照先進先出的原則儲存資料, 先進入的資料, 在讀取資料時先被讀出來.
2.4.1 API設計
類名 | Queue |
---|---|
構造器 | Queue() |
成員方法 | 1. public boolean isEmpty() 2. public int size() 3. pubic T dequequ() 拿出一個元素 4. public void enqueue()插入元素 |
成員變數 | 1. private Node head(); 2. private int N; 3. private Node last; |
成員內部類 | private class Node |
2.4.2 實現
package b_linear.d_queue; import java.util.Iterator; /** * 佇列 */ public class Queue<T> implements Iterable<T>{ private Node head; private Node last; private int N; private class Node { public T item; public Node next; public Node(T item, Node next) { this.item = item; this.next = next; } } public Queue() { this.head = new Node(null, null); this.last = null; this.N = 0; } public boolean isEmpty() { return N == 0; } public int size() { return N; } //新增元素 public void equeue(T t) { //當前尾結點為null if(last == null) { last = new Node(t, null); head.next = last; }else{ //當前尾結點不為null Node oldLast = last; last = new Node(t, null); oldLast.next = last; } //元素個數+1; N++; } //拿出元素 public T dequeue() { if(isEmpty()) { return null; } Node oldFist = head.next; head.next = oldFist.next; N--; //出佇列是在刪除元素, 如果佇列中元素刪除完了, 重置last=null; if(isEmpty()) { last = null; } return oldFist.item; } @Override public Iterator<T> iterator() { return new QIterator(); } private class QIterator implements Iterator { private Node n; public QIterator() { this.n = head; } @Override public boolean hasNext() { return n.next != null; } @Override public Object next() { n = n.next; return n.item; } } }
2.4.3 測試
package b_linear.d_queue; /** * 佇列測試 */ public class QueueTest { public static void main(String[] args) { //建立佇列 Queue<String> queue = new Queue<>(); //新增元素 queue.equeue("a"); queue.equeue("b"); queue.equeue("c"); queue.equeue("d"); for (String s : queue) { System.out.println(s); } System.out.println("-----------"); //拿出元素 String result = queue.dequeue(); System.out.println("出佇列:" + result); System.out.println("剩餘元素: " + queue.size()); } }
測試結果
a
b
c
d
-----------
出佇列:a
剩餘元素: 3