1、佇列是一種線性結構
2、相比陣列,佇列對應的操作可以看作是陣列的子集
3、只能從一端新增(隊尾)資料,從另一端取出資料(隊首)
4、fifo先進先出fist in first out
public
inte***ce
queue
public
class
arrayqueue
implements
queue
public
arrayqueue()
@override
public
intgetsize()
@override
public
boolean
isempty()
public
intgetcapacity()
@override
public
void
enqueue
(e e)
@override
public e dequeue()
@override
public e getfront()
}
public
class
linkedlistqueue
implements
queue
public
node
(e e)
public
node()
@override
public string tostring()
}private node head, tail;
private
int size;
public
linkedlistqueue()
@override
public
intgetsize()
@override
public
boolean
isempty()
@override
public
void
enqueue
(e e)
else
size ++;}
@override
public e dequeue()
@override
public e getfront()
}
使用front來記錄隊首的位置,使用tail來記錄下乙個入隊元素所存放的位置,也就是對尾元素的下乙個位置。所以初始的迴圈佇列應該是這樣的。 如果有元素出隊,那麼將front加1即可,這樣就不用所有元素移動了。
判斷隊為空的條件是:front == tail
判斷隊滿條件是:(tail +1) % capacity = front因為是迴圈的,所以記得取餘數。
所以,迴圈佇列中需要浪費乙個空間。
public class loopqueue implements queue
public loopqueue()
public int getcapacity()
@override
public boolean isempty()
@override
public int getsize()
@override
public void enqueue(e e)
@override
public e dequeue()
@override
public e getfront()
private void resize(int newcapacity)
@override
public string tostring()
return res.tostring();
}public static void main(string args)}}
STL底層資料結構實現
c stl 的實現 1.vector 底層資料結構為陣列 支援快速隨機訪問 2.list 底層資料結構為雙向鍊錶,支援快速增刪 3.deque 底層資料結構為乙個 控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾 中間不能 快速增刪,也支援隨機訪問 deque是乙個雙端佇列 double...
C 底層資料結構實現
c stl 的實現 1.vector 底層資料結構為陣列 支援快速隨機訪問 2.list 底層資料結構為雙向鍊錶,支援快速增刪 3.deque 底層資料結構為乙個 控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾 中間不能 快速增刪,也支援隨機訪問 deque是乙個雙端佇列 double...
資料結構 Java實現佇列
佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 head 進行刪除操作,而在表的後端 tail 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入...