【數據結構】棧和隊列的相同點和不同點

棧的理解和操作:點擊打開鏈接
隊列的理解和操作:點擊打開鏈接
循環隊列:點擊打開鏈接



棧(Stack)和隊列(Queue)是兩種操作受限的線性表。
線性表:線性表是一種線性結構,它是一個含有n≥0個結點的有限序列,同一個線性表中的數據元素數據類型相同並且滿足「一對一」的邏輯關係。

「一對一」的邏輯關係指的是對於其中的結點,有且僅有一個開始結點沒有前驅但有一個後繼結點,有且僅有一個終端結點沒有後繼但有一個前驅結點,其它的結點都有且僅有一個前驅和一個後繼結點。)

這種受限表現在:棧的插入和刪除操作只允許在表的尾端進行(在棧中成爲「棧頂」),滿足「FIFO:First In Last Out」;隊列只允許在表尾插入數據元素,在表頭刪除數據元素,滿足「First In First Out」

棧與隊列的相同點:

1.都是線性結構。

2.插入操作都是限定在表尾進行。

3.都可以通過順序結構和鏈式結構實現。、

4.插入與刪除的時間複雜度都是O(1),在空間複雜度上兩者也一樣。

5.多鏈棧和多鏈隊列的管理模式可以相同。

棧與隊列的不同點:

1.刪除數據元素的位置不同,棧的刪除操作在表尾進行,隊列的刪除操作在表頭進行。

2.應用場景不同;常見棧的應用場景包括括號問題的求解,表達式的轉換和求值,函數調用和遞歸實現,深度優先搜索遍歷等;常見的隊列的應用場景包括計算機系統中各種資源的管理,消息緩衝器的管理和廣度優先搜索遍歷等。

3.順序棧能夠實現多棧空間共享,而順序隊列不能。