棧(stack)和佇列(queue)是兩種操作受限的線性表。
(線性表:線性表是一種線性結構,它是乙個含有n≥0個結點的有限序列,同乙個線性表中的資料元素資料型別相同並且滿足「一對一」的邏輯關係。
「一對一」的邏輯關係指的是對於其中的結點,有且僅有乙個開始結點沒有前驅但有乙個後繼結點,有且僅有乙個終端結點沒有後繼但有乙個前驅結點,其它的結點都有且僅有乙個前驅和乙個後繼結點。)
這種受限表現在:棧的插入和刪除操作只允許在表的尾端進行(在棧中成為「棧頂」),滿足「fifo:first in last out」;佇列只允許在表尾插入資料元素,在表頭刪除資料元素,滿足「first in first out」。
棧與佇列的相同點:
1.都是線性結構。
2.插入操作都是限定在表尾進行。
3.都可以通過順序結構和鏈式結構實現。、
4.插入與刪除的時間複雜度都是o(1),在空間複雜度上兩者也一樣。
5.多鏈棧和多鏈佇列的管理模式可以相同。
棧與佇列的不同點:
1.刪除資料元素的位置不同,棧的刪除操作在表尾進行,佇列的刪除操作在表頭進行。
2.應用場景不同;常見棧的應用場景包括括號問題的求解,表示式的轉換和求值,函式呼叫和遞迴實現,深度優先搜尋遍歷等;常見的佇列的應用場景包括計算機系統中各種資源的管理,訊息緩衝器的管理和廣度優先搜尋遍歷等。
3.順序棧能夠實現多棧空間共享,而順序佇列不能。
**部落格
棧與佇列 建立棧 佇列
陣列棧 完成stack createstack int maxelements 函式,該函式建立乙個棧,maxelements為與分配的棧空間大小 棧可用空間為array 0,maxelements 1 typedef int elemtype struct stackrecord typedef ...
棧 佇列與優先佇列
123 45 include stack int s 入棧 push 出棧 pop 取棧頂top 123 45 include queue int s 入隊 push 出隊 pop 取隊首元素 front 不刪除 123 4priority queue int pq 入隊 push 出隊 pop 取...
棧 佇列與優先佇列
123 45 include stack int s 入棧 push 出棧 pop 取棧頂top 123 45 include queue int s 入隊 push 出隊 pop 取隊首元素 front 不刪除 123 4priority queue int pq 入隊 push 出隊 pop 取...