一、佇列簡單介紹
佇列是一種常用的資料結構之一,與之前的棧類似,不過佇列是「先進先出」。佇列有隊頭(front)和隊尾(rear),資料從隊尾進入佇列,從隊頭出佇列,隊頭(front)指向佇列的第乙個資料,隊尾(rear)指向佇列中的最後乙個資料。
二、佇列實現
佇列有很多種,這裡只是介紹最基本的實現,採用鏈式儲存,也就是鏈式佇列,通過結點物件描述乙個資料,結點物件包含具體資料和下乙個結點的引用。
1、建立節點類
結點類就跟建立鍊錶的結點類一樣。
/**
* 佇列裡的節點類
* @param */
public class node
public t getdata()
public void setdata(t data)
public nodegetnextnode()
public void setnextnode(nodenextnode)
}
2、建立佇列類linkqueue
在linkqueue類中成員變數及方法如下:
成員變數:front、rear、size
對應的行為方法有:入隊、出隊、獲取佇列元素個數、判斷佇列是否為空。
/**
* 佇列類
*/public class linkqueue
/*** 判斷佇列是否為空
*/public boolean isemptyqueue()
/*** 從隊尾進入佇列 實現fifo先進先出的效果
*/public void enterfromendqueue(t data)else
size++;
}/**
* 從佇列的頭部 移除節點 並返回移除的節點資料
*/public t removeheadnodeforqueue()
//臨時變數 儲存要移除的頭節點 並且讓這個要被移除的頭結點的指標為null
noderemoveheadnode = head;
//注意 這行**不能寫在這裡 引用傳遞原因 會導致空指標異常
// removeheadnode.setnextnode(null);
//讓頭結點的下乙個節點 變成頭結點
head = head.getnextnode();
// help gc 清除關聯引用
removeheadnode.setnextnode(null);
//如果上面移除的是佇列中僅剩下的最後的乙個節點 那麼此時tail節點就是這個head節點
if(size == 1)
size--;
return removeheadnode.getdata();}}
當建立佇列時佇列中沒有資料,front和rear的值都為null。當插入第乙個資料時,將front和rear都指向第乙個結點物件
後續在插入資料時就利用rear進行資料的插入。
3、測試
測試**及結果如下:
/**
* 實現簡單的佇列
*/public class queuetest
}
列印結果:
size:4
出佇列:1
出佇列:2
出佇列:3
出佇列:4
刪完重新新增**********====
size:4
出佇列:11
出佇列:22
出佇列:33
出佇列:44
Java實現佇列
先寫乙個介面,確定要實現的功能package myqueue public inte ce myqueue順序佇列 package myqueue public class queuearray implements myqueue override public void clear overri...
Java佇列實現
佇列陣列實現 佇列長度有限,但是考慮到平時一般都使用有界佇列,這應該也不算是個缺點 public class queue public void push object obj throws exception public object pop throws exception public ob...
佇列 Java實現
佇列主要的特性是先進先出 fifo 先看一下佇列的基本結構 private object data null private int maxsize 佇列的容量 private int front 頭 private int rear 尾data 用來存放佇列中的值 public myqueue i...