棧的順序儲存結構

2022-08-21 12:21:09 字數 1267 閱讀 6000

1 定義

棧是限定只能在表尾刪除和插入操作的線性表。

允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom)。棧又稱為後進先出(last in first out)的線性表,簡稱lifo結構。

棧的插入操作稱為進棧,也稱壓棧、入棧。

棧的刪除操作稱為出棧,也稱彈棧。

2 棧的抽象資料結構

由於棧本身就是乙個線性表,所以線性表的操作特性它都具備,針對它的特殊性,在它的操作上可能會有一些變化。將進棧和出棧分別改名為push和pop。

由於棧本身是乙個線性表,所以線性表的順序儲存結構和鏈式儲存結構同樣適用於棧。

3 棧的順序儲存結構

用順序儲存結構儲存的棧稱為順序棧。線性表是用陣列來實現的。對於棧,用下標為0的一端作為棧底比較好,因為首元素都存在棧底,變化比較小。

我們定義乙個top變數來指示棧定元素在陣列中的位置。若儲存棧的長度為stacksize,則棧頂位置top必需小於stacksize。當棧存在乙個元素時,top等於0,因此空棧的判斷條件為top等於-1.

棧的結構定義

typedef int

selemtype;

typedef

struct

sqstack;

若現在有乙個棧,stacksize為5,則普通棧、空棧、滿棧的情況如下圖所示。

4 進棧

對於棧的插入,即進棧操作,其實就是做了如下處理。

棧頂指標加1

s->data[s->top] = e; //

將新元素賦值給棧頂空間

return

ok;}

5 出棧

status pop(sqstack *s, selemtype *e) 

*e = s->data[s->top]; //

將要刪除的棧頂元素賦值給e

s->top --; //

棧頂指標減1

return

ok; }

棧的順序儲存結構

標頭檔案 函式的宣告 include include include define stacksize 100 typedef int elemtype typedef struct seqstack void initstack seqstack s 初始化棧 int stackempty seq...

棧的順序儲存結構

include include define maxsize 10 typedef struct stack sqstack,sq 棧的初始化,建立乙個空棧 sq inistack intpush sq s,int e void printf sq s while i s top 刪除棧頂元素,並用...

棧的順序儲存結構

棧是一種限定僅在表尾進行插入或刪除操作的線性表。允許插入或刪除的一端為棧頂,另一端為棧底。特點是先進後出 first in last out 棧的插入操作叫做入棧,棧的刪除操作叫做出棧。c語言 入棧 int push stack s elemtype e s top s data s top e r...