#include
using namespace std;
#define stack_init_size 100 //儲存空間初始分配量
#define stacinerement 10 //儲存空間分配增量
#define error 0
#define ok 1
class stack{
private:
int*top; //棧頂指標
int*base; //棧底指標
intstacksize; //棧的當前可使用的最大容量
public:
friendstack initstack(); //初始化
friendint push(stack &s); //把資料壓入棧內
friendint gettop(stack &s); //取出棧頂元素(棧中元素沒有減少)
friendint pop(stack &s); //彈出棧頂元素(棧中元素已減少乙個)
stackinitstack(){
stacks;
s.base=(int*)malloc(stack_init_size*sizeof(int));
s.top=s.base;
s.stacksize=stack_init_size;
returns;
int push(stack &s){
intn,e;
if(s.top-s.base>=s.stacksize){
s.base=(int*)realloc(s.base,(s.stacksize+stacinerement)*sizeof(int));
if(!s.base)return error;
s.top=s.base+s.stacksize;
s.stacksize+=stacinerement;
cout<<"請輸入你需要元素的個數: "; cin>>n;
s.stacksize=n;
cout<<"請輸入你需要的">e;
*s.top++=e;
cout<<"剛建立的棧內的元素為(從棧底至棧頂輸出):";
int*p=s.base;
for(inti=0;icout<<*p<<" ";
p++;
coutint gettop(stack &s){
if(s.top==s.base)return error;
inte=*(s.top-1);
cout<<"棧頂元素為:";coutint pop(stack &s){
if(s.top==s.base)return error;
inte=*(--s.top);
cout<<"彈出的棧頂元素為:";coutcout<<"新的棧內的元素為(從棧底至棧頂輸出):";
int*p=s.base;
for(inti=0;icout<<*p<<" ";
p++;
coutint main(){
stacks;
s=initstack();
push(s);
gettop(s);
pop(s);
return0;
棧的表示和實現
棧是僅能在表尾 棧頂 進行插入或刪除操作的 線性表 後進後出 基本操作 初始化,判斷是否為空棧,取棧頂元素,插入新的棧頂元素。非空棧中棧頂指標始終在棧頂元素的下乙個位置 分為順序棧 include include typedef struct sqstack void initial sqstack...
順序棧 棧的順序表示和實現
用順序表表示的棧的基本操作 include include define selemtype int define status int define stack init size 100 初始空間分配量 define stackincrement 10 儲存空間分配增量 using namesp...
鏈棧 棧的鏈式表示和實現
用鏈表示的棧的基本操作 include include define maxsize 1000 鍊錶的最大長度 define selemtype int define status int 棧的結構 typedef struct lstacklstack,lstacklist 初始化 status ...