順序棧的表示和實現(有詳細注釋)

2021-10-22 23:58:33 字數 1009 閱讀 6407

#include #define overflow 0//定義「溢位」為0

#define error 0

#define ok 1

#define maxsize 100//順序棧儲存空間的初始分配量

typedef int selemtype;//selemtype為資料型別

typedef int status;//定義結構體

//順序棧的型別定義

typedef struct

sqstack;//sqstack就是問題中宣告的型別,後續可以用它來定義變數

//棧的初始化:初始化,初始化操作就是為棧動態分配乙個預定義大小的陣列空間,base指向棧底,top 初始值也指向棧底,表示棧空,stacksize置為棧的最大容量

status initstack(sqstack &s)//棧的初始化,構造乙個空棧s

//順序棧的入棧,入棧操作是指在棧頂插入乙個新的元素,首先判斷棧是否滿,若滿則報錯,否則將新元素壓入棧頂,棧頂//指標加1

status push(sqstack &s,selemtype e)

//順序棧的出棧:出棧操作是將棧頂元素刪除。首先判斷棧是否為空,若空則報錯,否則棧頂指標減1,棧頂元素出棧

status pop(sqstack &s,selemtype&e)

//取順序棧的棧頂元素

status gettop(sqstack s,selemtype &e)//返回s的棧頂元素,不修改棧頂指標

bool stackempty(sqstack s)//若s為空棧,返回true,否則返回false

int stacklength(sqstack s)//返回s的元素個數,即棧的長度

int main()

if(gettop(s,e))

cout<<"\n彈出棧的元素依次為:";

while(pop(s,e))

cout

return 0;

}

順序棧 棧的順序表示和實現

用順序表表示的棧的基本操作 include include define selemtype int define status int define stack init size 100 初始空間分配量 define stackincrement 10 儲存空間分配增量 using namesp...

大頂堆的實現 有詳細注釋

堆排序的實現 c語言 heap sort 交換陣列中的兩個元素 void swap int arr,int idx1,int idx2 堆化,根據定義調整為大頂堆 void max heapify int arr,int index,int num 如果有右節點,且右節點值更大,則更新最大值索引 i...

棧的順序表示和實現

棧是僅限定在表位進行插入和刪除的線性表。因此,對棧來說,表尾端有其特殊含義,稱為棧頂,相應的表頭端稱為棧底。不含元素的空表稱為空棧。假設棧s a1,a2,an 則稱a1為棧底元素,an為棧頂元素。棧中元素按啊a1,a2,an的次序進棧,退棧的第乙個元素應是棧頂元素。換句話說,棧的修改是按後進先出的原...