一、棧和隊列與鏈表的區別
? ? ? ? 1.鏈表可以在任意位置插入和刪除元素
? ? ? ? 2.棧和隊列只允許在指定位置插入和刪除元素
? ? ? ? 3.棧只允許在棧頂位置入棧和出棧元素
? ? ? ? 3.相同點:表、棧、隊列都是一種線性結構(一對一)
? ? ? ? 4.棧和隊列是一種特殊的表狀結構
二、棧
(一)概念
? ? ? ? 1.先進后出,后進先出
? ? ? ? 2.棧頂:允許入棧和出棧的一端
? ? ? ? 3.棧底:不允許出棧和入棧的一端
? ? ? ? 4.入棧(壓棧):將元素放入棧頂位置
? ? ? ? 5.出棧(彈棧):將棧頂元素去除
? ? ? ? 6.棧針:記錄棧頂位置的標記
(二)分類
? ? ? ? 1.順序棧
? ? ? ? ? ? ? ? 1.1增棧:從(棧底)低地址向高地址存
? ? ? ? ? ? ? ? 1.2減棧:從(棧底)高地址向低地址存
? ? ? ? ? ? ? ? 1.3空棧:棧針指向要入棧的位置
? ? ? ? ? ? ? ? 1.4滿棧:棧針指向棧頂元素位置
? ? ? ? ? ? ? ? 1.5常見的順序棧:空增棧、空減棧、滿增棧、滿減棧
? ? ? ? 2.順序棧的實現
? ? ? ? 3.鏈式棧
三、隊列
(一)概念
? ? ? ? 1.先進先出,后進后出
? ? ? ? 2.隊頭:出隊的一端
? ? ? ? 3.隊尾:入隊的一端
? ? ? ? 4.入隊:將元素放入隊列末尾
? ? ? ? 5.出隊:將元素從隊頭中取出
(二)分類
? ? ? ? 1.循環隊列
? ? ? ? 2.鏈式隊列