順序棧,就是用一組位址連續的儲存單元來存放棧元素,然後用乙個棧結構去維護乙個棧。在c中,可用動態開闢的陣列去表示,維護的棧結構需要有乙個棧底和乙個棧頂指標。因為開闢乙個陣列需要事先知道它的大小,所以棧結構裡就必須還有乙個整型變數來表示當前棧的儲存容量,再可定義乙個變數用來擴充棧的最大容量。實現如下:
#include#include#include//順序棧實現
#define stack_init_size 100//儲存空間初始分配量
#define stackincrement 10//儲存空間分配增量
typedef structsqstack;
//順序棧基本操作實現
//構造乙個空棧
//初始化成功返回true
bool initstack(sqstack &s)
s.top = s.base;
s.stacksize = stack_init_size;
return true;
}//銷毀棧s,s不在存在
//銷毀成功,返回true
int destroystack(sqstack &s)
//把s置為空棧
//成功返回true
int clearstack(sqstack &s)
//判斷是否空棧
//返回,true-空棧,false-非空棧
int stackempty(sqstack &s)
//返回當前棧的長度
//成功返回當前棧的長度,異常退出
int stacklength(sqstack &s)
//取出棧頂元素
int gettop(sqstack &s, int &e)
e = *(s.top - 1);
}//入棧
int push(sqstack &s, int e)
* s.top++ = e;
return true;
}//出棧
int pop(sqstack &s,int &e)
C語言 實現 順序棧
seqstack.h 標頭檔案宣告如下 include typedef int datatype 自定義資料型別,假定為整型 typedef struct seqstack 順序棧定義 seqstack typedef struct seqstack pseqstack 順序棧的指標型別 建立乙個容...
C語言實現順序棧
棧和佇列是兩種重要的線性結構。從資料結構的角度看,棧和佇列也是線性表,其特殊性在於棧和佇列的操作位置都在特定的位置。引用自嚴蔚敏的資料結構與演算法教材 棧的結構體定義 typedef struct stack sqstack 和鍊錶類似 我們首先要初始化順序棧 sqstack initsqstack...
順序表棧C語言實現
seqstack.h created on 2019年8月1日 author administrator ifndef seqstack h define seqstack h 陣列去模擬棧的順序儲存,有陣列的後面模擬棧頂 避免資料頻繁移動 define max size 1024 define s...