順序棧的型別定義

2022-10-08 02:09:01 字數 1088 閱讀 3453

#define stacksize 100 //假定預分配的棧空間最多為100 個元素

typedef char elementtype;//假定棧元素的資料型別為字元

typedef structseqstack;

注意:①順序棧中元素用向量存放;

②棧底位置是固定不變的,可設定在向量兩端的任意乙個端點;

③棧頂位置是隨著入棧和出棧操作而變化的,用乙個整型量top(通常稱top 為棧頂指標)來指示當前棧頂位置。

2、順序棧的結構

注意:top 指向入棧是下乙個元素將要存放的位置;

top-1(減1)是指向出棧時下乙個元素的取值位置。

棧空的條件:top==base;

棧滿的條件:top-base>=stacksize

3、順序棧的基本操作

前提條件:設s 是seqstack 型別的指標變數。若棧底位置在向量的低端,即s->data[0]是棧底元素。

top:

(1) 進棧操作

進棧時,需要將s->top 加1

注意:①入棧操作前,需要檢視棧是否已滿,s->top==stacksize-1 表示棧滿

②"上溢"現象--當棧滿時,再做入棧運算產生空間溢位的現象。上溢是一種出錯狀態,應設法避免。

(2) 出棧操作

退棧時,需將s->top 減1

注意:①出棧操作前需要考慮棧中是否有元素,s->top<0 表示空棧

②"下溢"現象——當棧空時,做出棧運算產生的溢位現象。

下溢是正常現象,常用作程式控制轉移的條件。

順序棧在入棧和出棧操作時的具體變化情況,分別如下圖所示:

(1) 置空棧

void initstack(seqstack * s)

(2) 判棧空

int stackempty(seqstack * s)

(3) 進棧(入棧)

void push(seqstack * s,datatype x)

}(4) 退棧(出棧)

datatype pop(seqstack * s)

(5) 取棧頂元素(不改變棧頂指標)

datatype gettop(seqstack * s)

實驗報告04 順序棧的基本操作

實驗目的及要求 了解和掌握順序棧的特點 掌握順序棧基本操作的實現 要求完成順序棧的初始化 入棧 出棧 取棧頂元素 顯示操作的實現。實驗裝置環境及要求 pc機一台,記憶體要求128m以上,vc 6.0整合開發環境。實驗內容與步驟 1 在vc 6.0環境中新建乙個工程和c 檔案 2 實現順序棧初始化 入...

資料結構實驗三之順序棧

include include define maxsize 100typedef int datatype typedef struct stack sqstack sqstack initstack sqstack s 順序棧的初始化 void push sqstack s,datatype x...

資料結構實驗三順序棧基本操作

課內實驗任務書 年月日實驗三順序棧的基本操作 一 實驗目的 1.了解順序棧的結構特點及有關概念 2.理解順序棧的儲存結構 3.掌握順序棧的基本操作演算法。二 實驗內容 建立順序棧,完成順序棧的基本操作 初始化 入棧 出棧 輸出 銷毀,置棧空 求棧長 判順序棧是否為空 棧滿 取棧頂元素。三 實驗要點及...