資料結構之棧和佇列

2021-07-10 03:32:19 字數 612 閱讀 7636



棧是乙個非常常見的資料結構,它在計算機領域中被廣泛的使用,比如作業系統會給每個執行緒分配乙個棧。

用來儲存函式呼叫時各個函式的引數,返回值以及臨時變數等。棧的特點是先進後出。

通常棧是乙個不考慮排序的資料結構,我們需要o(n)時間才能找到棧中的最大值或者最小值,

如果想要在o(1)時間內找到棧中的最大值或者是最小值,需要對棧做特殊的設計。

佇列是另外一種非常重要的資料結構,它和棧不同的是它的特點是先進先出。

棧和佇列雖然是兩個針鋒相對的資料結構,但是它們卻相互聯絡,比如下面的**。

//用兩個棧實現佇列

//定義棧的結構

template class cqueue

//實現棧中的插入元素的方法

實現棧中的刪除元素的方法

templatevoid cqueue::deletehead()

}if(stack2.size()==0)

throw new exception("queue is empty.");

t head = stack2.top();

stack2.pop();

return head;

}

資料結構之棧和佇列

棧 stack 是限定僅在表尾進行插入和刪除操作的線性表。我們把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何資料元素的棧稱為空棧。棧又稱為後進先出 last in first out 的線性表,簡稱lifo結構。棧的插入操作,叫做進棧,也稱壓棧 入棧。類似子彈入彈夾。...

資料結構之棧和佇列

讀自 資料結構 c語言版 嚴蔚敏 吳偉民 清華大學出版社 棧 棧是限定僅在表尾進行插入或刪除操作的線性表。因此對於棧來說,表尾端有其特殊含義,稱為棧頂 top 相應地,表頭端稱為棧底 bottom 不含元素的空表稱為空棧。後進先出lifo 棧的順序儲存表示 define stack init siz...

資料結構之 佇列和棧

之前看啊哈演算法看到這兩種資料結構,它裡面只是簡單說明了一下,所以我先大致了解了一下,若有不全的地方之後再補充。佇列是一種特殊的線性結構,它只允許在佇列的首部 head 進行刪除操作,這稱為 出隊 而在佇列的尾部 tail 進行插入操作,這稱為 入隊 當佇列中沒有元素時 即head tail 稱為空...