資料結構筆記 第三章棧和佇列

2021-09-29 04:09:00 字數 1979 閱讀 7361

※棧(限制插入/刪除資料的位置)

3.2.1

1.棧的定義

棧是只能在表的一端進行插入刪除操作的線性表,允許插入(入棧)和刪除(出棧)的一端稱為棧頂,另一端稱為棧底,不含有任何資料元素的棧稱為空棧。

後進先出,即任何時刻出棧的元素都只能是棧頂元素。

設定指示器,記錄棧頂位置。

2.棧的抽象資料型別定義(stack)

棧的初始化(構建空棧) 棧的銷毀 插入 刪除 取棧頂元素 判空

3.2.2 棧的順序儲存結構及實現

1.順序棧的儲存結構

通常把陣列元素下表為0的一端作為棧底,附設top變數指向棧頂元素所在陣列中的下標

設棧陣列長度為stacksize,則設棧為空時棧頂位置top=-1,棧滿時棧頂位置為top=stacksize-1。入棧時棧頂位置top+;出棧時棧頂位置top-1.

2.順序棧的實現

const int stacksize = 10; //10是示例性的資料,根據實際問題具體定義

template //定義模板類seqstack

class seqstack

; ①建構函式——順序棧初始化

將棧頂指標top置為-1.

②析構函式為空

③入棧操作

插入元素x需要將棧頂位置top+1,然後在top的位置填入x。

template void seqstack:: push(datatype x)

④出棧操作

取出棧頂元素,然後棧頂位置top-1.

template datatype seqstack:: pop( )

⑤取棧頂元素

將top位置的棧頂元素取出並返回

template datatype seqstack:: gettop( )

⑥判空操作

判斷top是不是-1

template int seqstack:: empty()

3.2.3棧的鏈結儲存結構及實現

1.棧鏈的儲存結構

因為只能在棧頂執行插入和刪除操作,故以單鏈表頭部做棧頂方便而且沒必要設定頭結點。

2.操作

建構函式(鏈棧的初始化)

析構函式

入棧操作(只需要處理棧頂)

出棧操作(只需處理棧頂)

取棧頂元素 (只需返回棧頂指標top所指結點的資料域,並不修改棧頂指標)

判空操作(判斷top指標是否為空)

3.2.4 順序棧和鏈棧的比較

元素個數變化較大用鏈棧,反之用順序棧。

※佇列3.3.1 佇列的邏輯結構

佇列是只允許在一端進行插入操作(入隊,隊尾),在另一端進行刪除操作(出隊,隊頭)的線性表。

特點:先進先出

3.3.2 佇列的順序儲存結構及實現

1.佇列的順序儲存結構(順序佇列)

設定隊頭隊尾兩個位置變數front和rear。入隊時入隊時rear加1,出隊時front加1。規定:front指向隊頭元素的前乙個位置,rear指向隊尾元素的位置。

2.迴圈佇列的儲存結構

作用:解決假溢位問題 假溢位:當元素被插入到陣列中下標最大的位置後,陣列空間就備用盡了,但此時陣列低端還有空閒空間。

方法:拖尾相接,即允許佇列直接從陣列下邊最大的位置延續到下標最小的位置。可以通過取餘實現。設儲存佇列的陣列長度為queuesize,操作語句為rear=(rear+1)%queuesize

判斷隊空/隊滿:front=rear 為了區分隊空隊滿,可以浪費乙個儲存空間,使隊尾和隊首位置相差為1,即 (rear+1)% queuesize=front

3.3.3 佇列的鏈式儲存結構及實現

1.鏈佇列的儲存結構

為使空佇列和非空佇列操作一樣,設定頭結點。

根據先入先出特性,設定隊頭(刪除)指標指向鏈佇列的頭結點,隊尾(插入)指標指向終端節點。

2.鏈佇列的實現

出隊操作時,出隊後判斷出隊前佇列長度是否為1 :if(p-next=nullptr) rear=front;

資料結構筆記 第三章 棧和佇列

棧 限定僅在表尾進行插入和刪除操作的線性表。允許插入和刪除的一端稱為棧頂,另一端稱為棧底。設指標top指示棧頂元素在陣列中的位置。進棧 top加1 出棧 top減1 棧空 top 1 棧滿 top max size 1 順序棧類的宣告 const int max size 100 template ...

資料結構第三章棧和佇列

第四章 棧和佇列 1.棧 限定僅在表尾進行插入或刪除操作的線性表,表尾端稱為棧頂,表頭端稱為棧底。棧頂移動,棧底固定。特點 先進後出 後進先出 typedef struct sqstack status push sqstack s,selemtype e status pop sqstack s,...

資料結構 第三章 棧和佇列

目錄 3.1 堆疊的基本概念 3.2 堆疊的順序儲存結構 一 構造原理 二 實現 三.多棧共享連續空間問題 3.3 堆疊的鏈式儲存結構 一.構造原理 二 實現 3.4 佇列的基本概念 3.5佇列的順序儲存結構 一.構造原理 二 實現 三.迴圈佇列 3.5 佇列的鏈式儲存結構 一.構造原理 二 實現 ...