(線性表:線性表是一種線性結構,它是一個含有n≥0個結點的有限序列,同一個線性表中的數據元素數據類型相同並且滿足“一對一”的邏輯關系。
“一對一”的邏輯關系指的是對於其中的結點,有且僅有一個開始結點沒有前驅但有一個后繼結點,有且僅有一個終端結點沒有后繼但有一個前驅結點,其它的結點都有且僅有一個前驅和一個后繼結點。)
這種受限表現在:棧的插入和刪除操作只允許在表的尾端進行(在棧中成為“棧頂”),滿足“FIFO:First In Last Out”;隊列只允許在表尾插入數據元素,在表頭刪除數據元素,滿足“First In First Out”。
棧與隊列的相同點:
1.都是線性結構。
2.插入操作都是限定在表尾進行。
3.都可以通過順序結構和鏈式結構實現。、
4.插入與刪除的時間復雜度都是O(1),在空間復雜度上兩者也一樣。
5.多鏈棧和多鏈隊列的管理模式可以相同。
棧與隊列的不同點:
1.刪除數據元素的位置不同,棧的刪除操作在表尾進行,隊列的刪除操作在表頭進行。
2.應用場景不同;常見棧的應用場景包括括號問題的求解,表達式的轉換和求值,函數調用和遞歸實現,深度優先搜索遍歷等;常見的隊列的應用場景包括計算機系統中各種資源的管理,消息緩沖器的管理和廣度優先搜索遍歷等。
3.順序棧能夠實現多棧空間共享,而順序隊列不能。