棧是乙個非常常見的資料結構,它在計算機領域中被廣泛的使用,比如作業系統會給每個執行緒分配乙個棧。
用來儲存函式呼叫時各個函式的引數,返回值以及臨時變數等。棧的特點是先進後出。
通常棧是乙個不考慮排序的資料結構,我們需要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 稱為空...