棧(Stack)是僅限制在表的一端進行插入和刪除運算的線性表,稱插入、刪除這一端為棧頂,另一端稱為棧底。表中無元素時為空棧。棧的修改是按后進先出的原則進行的,我們又稱棧為LIFO表(Last In First Out)。通常棧有順序棧和鏈棧兩種存儲結構。
棧的基本運算有六種: ·構造空棧:InitStack(S)
·判棧空: StackEmpty(S)
·判棧滿: StackFull(S)
·進棧: Push(S,x)
·退棧: Pop(S)
·取棧頂元素:StackTop(S)
在順序棧中有"上溢"和"下溢"的現象。 ·"上溢"是棧頂指針指出棧的外面是出錯狀態。
·"下溢"可以表示棧為空棧,因此用來作為控制轉移的條件。順序棧中的基本操作有六種:·構造空棧·判棧空·判棧滿·進棧·退棧·取棧頂元素鏈棧則沒有上溢的限制,因此進棧不要判棧滿。鏈棧不需要在頭部附加頭結點,只要有鏈表的頭指針就可以了。
鏈棧中的基本操作有五種:·構造空棧·判棧空·進棧·退棧·取棧頂元素隊列(Queue)是一種運算受限的線性表,插入在表的一端進行,而刪除在表的另一端進行,允許刪除的一端稱為隊頭(front),允許插入的一端稱為隊尾(rear) ,隊列的操作原則是先進先出的,又稱作FIFO表(First In First Out) 。隊列也有順序存儲和鏈式存儲兩種存儲構。
隊列的基本運算有六種: ·置空隊:InitQueue(Q)
·判隊空:QueueEmpty(Q)
·判隊滿:QueueFull(Q)
·入隊:EnQueue(Q,x)
·出隊:DeQueue(Q)
·取隊頭元素:QueueFront(Q)
順序隊列的"假上溢"現象:由于頭尾指針不斷前移,超出向量空間。這時整個向量空間及隊列是空的卻產生了"上溢"現象。
為了克服"假上溢"現象引入循環向量的概念,是把向量空間形成一個頭尾相接的環形,這時隊列稱循環隊列。
判定循環隊列是空還是滿,方法有三種: ·一種是另設一個布爾變量來判斷;
·第二種是少用一個元素空間,入隊時先測試((rear+1)%m = front)? 滿:空;
·第三種就是用一個計數器記錄隊列中的元素的總數。
隊列的鏈式存儲結構稱為鏈隊列,一個鏈隊列就是一個操作受限的單鏈表。為了便于在表尾進行插入(入隊)的操作,在表尾增加一個尾指針,一個鏈隊列就由一個頭指針和一個尾指針唯一地確定。鏈隊列不存在隊滿和上溢的問題。在鏈隊列的出隊算法中,要注意當原隊中只有一個結點時,出隊后要同進修改頭尾指針并使隊列變空。
聲明:
(一)由于考試政策等各方面情況的不斷調整與變化,本網站所提供的考試信息僅供參考,請以權威部門公布的正式信息為準。
(二)本網站在文章內容來源出處標注為其他平臺的稿件均為轉載稿,免費轉載出于非商業性學習目的,版權歸原作者所有。如您對內容、版權等問題存在異議請與本站聯系,我們會及時進行處理解決。
相關推薦
2022年浙江自考《當代中國政治制度》復習筆記匯總
09-152023年浙江自考西方行政學說史復習資料:西方行政學的產生
03-022023年10月浙江自考傳播學概論復習資料:有限效果論
08-302022年浙江自考中國古代文學史(一)第三編第九章復習資料
10-31自考輔導資料:2021年10月《學前教育史》—論幼稚師范教育
06-052023年4月浙江自考中外教育簡史復習筆記:英國近代教育制度
12-08自考輔導資料:2019年10月《美學》知識點-崇高的內涵與特點
09-17自考輔導資料:2021年10月《學前教育史》—雅典的學前教育
06-072023年4月浙江自考英美文學選讀復習筆記:William Butler Yeats
12-082023年4月浙江自考新聞學概論復習筆記:社會主義新聞事業對從業者的基本要求
12-05