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

2021-10-03 06:33:30 字數 1163 閱讀 7397

用順序表表示的棧的基本操作**:

#include#include#define selemtype int 

#define status int

#define stack_init_size 100 //初始空間分配量

#define stackincrement 10 //儲存空間分配增量

using namespace std;

//棧的結構

typedef struct sqstack;

//初始化棧

/**說明,這裡使用c語言的malloc和realloc

除此之外,還可以使用c++的new運算子( s.base = new selemtype[maxsize];)

但是,new運算子在給定乙個定長陣列初始化後,長度變不能改變(c++沒有realloc函式)

改進有兩個方法,

(1)、在初始化時,使用vector變長陣列代替陣列

(2)、新建乙個更大的陣列,將原有的元素複製過去(realloc就是這個原理)

*/ status initstack(sqstack &s)

s.top = s.base; //棧頂指標初值指向棧底,即top=base表示空棧

s.stacksize = stack_init_size; //標記空間大小

printf("初始化成功\n");

return 0;

} //入棧

status push(sqstack &s, selemtype e)

s.top = s.base+s.stacksize; //更新棧頂元素指標

s.stacksize += stackincrement; //更新最大容量

} *s.top++ = e; //插入到棧頂並將棧頂指標加一

printf("插入成功\n");

return 0;

} //建立棧,就是重複的將元素入棧(當然也可以單獨寫乙個建立的函式)

棧的順序表示和實現

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

順序棧的表示與實現

說明 想要使用順序表實現棧,結構體中應包含棧頂和棧底的指標,同時需要指定棧的儲存單元大小 動態可變 其中棧底指標base用來動態分配棧的記憶體空間,棧頂指標top用來指定棧頂元素在順序棧中的位置。初始化時top bas etop base top ba se,表示棧中無元素,而後每壓入乙個新的元素,...

c語言順序棧的表示和實現

define stack init size 100 初始大小 100個資料長度 define stackincrement 10 棧的分配增量 typedef int elemtype 棧儲存的資料型別 typedef enum status 列舉返回函式執行結果 typedef struct s...