用順序表表示的棧的基本操作**:
#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...