順序棧的實現

2021-07-24 04:56:38 字數 1780 閱讀 9263

資料結構中,棧的應用十分廣泛,如數值轉換、字元匹配等等。而在記憶體中,這種結構更是很常見。所以,自己很有必要複習和總結一下!

以下是棧的順序儲存結構:

typedef struct 

sqstack;

同時將棧的常見功能封裝在標頭檔案中:

標頭檔案stack.h:

//預編譯命令

#include#include//exit()

#define ok 1

#define error 0

#define overflow -2

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

#define stackincrement 2 // 順序棧儲存空間的分配增量

//資料結構

typedef int status;

//typedef int selemtype; //完成數制轉換

typedef char selemtype; //完成括號匹配

typedef struct

sqstack;

//函式宣告

status initstack(sqstack &s);

status createstack(sqstack &s,int n);

void printstack(sqstack s);

status gettop(sqstack s,selemtype &e);

status push(sqstack &s,selemtype e);

status pop(sqstack &s,selemtype &e);

status stackempty(sqstack s);

status destroystack(sqstack &s);

// 構造乙個最大空間為 stack_init_size的空順序棧s

status initstack (sqstack &s)

//輸入n個元素入棧

status createstack(sqstack &s,int n)

return ok;

}//輸出順序棧的元素

void printstack(sqstack s)

*s.top++ = e;

return ok;

}// 若棧不空,則刪除s的棧頂元素,

// 用 e 返回其值,並返回ok;

// 否則返回error

status pop(sqstack &s, selemtype &e)

//判斷棧空否

status stackempty(sqstack s)

//銷毀棧

status destroystack(sqstack &s)

最後,test源程式teststack.cpp如下:

#include "stack.h"

//選單函式宣告

int menu_select();

/* 1.初始化棧

2.建立棧

3.顯示棧

4.取棧頂元素

5.入棧

6.出棧

7.判斷棧空否

8.銷毀棧

*///主函式

int main()

} return 0;

}//選單函式

int menu_select()

return sn;

}

順序棧的實現

棧是一種限定只在表尾進行插入或刪除操作,棧也是線性表 表頭稱為棧的底部,表尾稱為棧的頂部,表為空稱為空棧,棧又 稱為後進先出的線性表,棧也有兩種表示 順序棧與鏈式棧 順序棧是利用一組位址連續的儲存單元,依次存放從棧底到棧頂 的資料元素,附設乙個指標指示棧頂的元素在棧中的位置.ifndef stack...

棧的順序實現

棧的順序實現 03 27 測試環境 tc2.0 include define true 1 define false 0 define len sizeof elemtype define stack initsize 100 define stack increment 30 typedef in...

順序棧的實現

棧關鍵點 後進先出,先進後出 借助陣列和 指標 來實現 includeusing namespace std const int smax 30 template class secsteck secsteck void set datatype a,int n 先建立乙個基礎棧,為後續操作做準備 ...