數據結構之隊列(java語言版)
隊列(Queue):在邏輯上是一種線性存儲結構。它有以下幾個特點:
1、隊列中數據是按照"先進先出(FIFO, First-In-First-Out)"方式進出隊列的。
2、 隊列只允許在"隊首"進行刪除操作,而在"隊尾"進行插入操作。
隊列通常包括的兩種操作:入隊列 和 出隊列。
隊列的種類也很多,單向隊列,雙向隊列,循環隊列。
底層可以由數組(順序表),鏈表實現。
數組隊列
public class Queue {//隊列
Array list;
public Queue() {
this.list=new Array(20);
}
public void enQueue(Object e) {
list.add(e);
System.out.println("入隊");
}
public Object deQueue() {
System.out.println("出隊");
return list.removeHead();
}
public void display() {
list.display();
}
}
測試
Queue queue=new Queue();
queue.enQueue("ok");
queue.enQueue("well");
queue.enQueue("good");
queue.enQueue("nice");
queue.display();
queue.deQueue();
queue.deQueue();
queue.display();
結果如下:
add success
入隊
add success
入隊
add success
入隊
add success
入隊
display:
ok well good nice
display over...
出隊
出隊
display:
good nice
display over...
鏈表隊列
public class LinkQueue{
SingleLinkList list;
public LinkQueue(){
list=new SingleLinkList();
}
public void enQueue(Object e) {
list.add(e);
System.out.println("入隊");
}
public Object deQueue() {
Object e=list.get(1);
list.remove(1);
System.out.println("出隊");
return e;
}
public void display() {
list.display();
}
public int getSize(){
return list.getSize();
}
}
測試
LinkQueue queue2=new LinkQueue();
queue2.enQueue("ok");
queue2.enQueue("well");
queue2.enQueue("good");
queue2.enQueue("nice");
queue2.display();
queue2.deQueue();
queue2.deQueue();
queue2.display();
結果如下:
入隊
入隊
入隊
入隊
開始遍歷數據:
ok well good nice
遍歷結束
出隊
出隊
開始遍歷數據:
good nice
遍歷結束