棧和佇列是兩種特殊的線性表,它們的邏輯結構和線性表相同,只是其運算規則較線性表有更多的限制,故又稱它們為運算受限的線性表。棧和佇列被廣泛應用於各種程式設計中。
棧的定義及基本運算
1、棧的定義
棧(stack)是限制僅在表的一端進行插入和刪除運算的線性表。
(1)通常稱插入、刪除的這一端為棧頂(top),另一端稱為棧底(bottom)。
(2)當表中沒有元素時稱為空棧。
(3)棧為後進先出(last in first out)的線性表,簡稱為lifo表。
棧的修改是按後進先出的原則進行。每次刪除(退棧)的總是當前棧中"最新"的元素,即最後插入(進棧)的元素,而最先插入的是被放在棧的底部,要到最後才能刪除。
【示例】元素是以a1,a2,…,an的順序進棧,退棧的次序卻是an,an-1,…,a1。
2、棧的基本運算
(1)initstack(s)
構造乙個空棧s。
(2)stackempty(s)
判棧空。若s為空棧,則返回true,否則返回false。
(3)stackfull(s)
判棧滿。若s為滿棧,則返回true,否則返回false。
注意:該運算只適用於棧的順序儲存結構。
(4)push(s,x)
進棧。若棧s不滿,則將元素x插入s的棧頂。
(5)pop(s)
退棧。若棧s非空,則將s的棧頂元素刪去,並返回該元素。
(6)stacktop(s)
取棧頂元素。若棧s非空,則返回棧頂元素,但不改變棧的狀態。
實現順序棧基本運算 棧
c語言實現順序棧的入棧 出棧 棧元素讀取操作 1 include 2 include 3 define maxsize 20 4 define maxnum 10 5 define elemtype int 6 typedef struct sqstack 7 sqstack 儲存結構型別名 111...
Problem D 棧的基本運算(棧和佇列)
time limit 1 sec memory limit 128 mb submit 43 solved 15 submit status web board 編寫乙個程式,實現順序棧的各種基本運算,主函式已給出,請補充每一種方法。1 初始化棧s 2 判斷棧s是否非空 3 進棧乙個元素 4 判讀棧...
Problem D 棧的基本運算(棧和佇列)
time limit 1 sec memory limit 128 mb submit 66 solved 24 submit status web board 編寫乙個程式,實現順序棧的各種基本運算,主函式已給出,請補充每一種方法。1 初始化棧s 2 判斷棧s是否非空 3 進棧乙個元素 4 判讀棧...