當你看到這個時,你會想起你敲過多少遍:
#include #include #define elemtype int
#define status int
#define init_size 10 //初始化長度
#define incre_size 10 //增量
#define ok 1
#define error 0
#define overflow -1
typedef structsqstack;
//初始化棧
status initstack(sqstack &s)
s.top = s.base;//棧頂棧底同時指向底部
s.stacksize = init_size;
return ok;
}//取得頂部元素
status gettop(sqstack s,elemtype &e)
e = *--s.top;//棧頂先減後取值
return ok;
}//進棧
status push(sqstack &s,elemtype e)
s.top = s.base + s.stacksize;//棧頂重新指向棧頂
s.stacksize += incre_size;
} *s.top++ = e;//否則直接賦值到棧頂後棧頂指標往後移
return ok;
}//出棧
status pop(sqstack &s,elemtype &e)
e = *--s.top;//先減後取值
return ok;
}//判斷棧空
status isstackempty(sqstack s)else
}//判斷棧是否滿
status isstackfull(sqstack s)else
}//獲得棧的長度
int getstacklength(sqstack s)
//銷毀棧
void destroystack(sqstack &s)
//列印棧中元素
void printstack(sqstack s)
while(st.top != st.base)
destroystack(st);
printf("\n");
}int main()
printf("進棧成功\n");
printf("棧中元素為:");
printstack(s);
pop(s,x);
printf("pop彈出的元素為:%d\n",x);
printf("棧中元素為:");
printstack(s);
gettop(s,x);
printf("gettop的元素為:%d\n",x);
printf("棧中元素為:");
printstack(s);
printf("棧的長度為:%d\n",getstacklength(s));
destroystack(s);
printf("銷毀棧成功\n");
return 0;
}
執行結果:
棧 的基本操作。
include include typedef struct node node,pnode typedef struct stack stack,pstack void initialize pstack mystack 棧的初始化。int push stack pstack mystack,in...
棧的基本操作
描述 棧是一種重要的資料結構,它具有push k和pop操作。push k是將數字k加入到棧中,pop則是從棧中取乙個數出來。棧是後進先出的 把棧也看成橫向的乙個通道,則push k是將k放到棧的最右邊,而pop也是從棧的最右邊取出乙個數。假設棧當前從左至右含有1和2兩個數,則執行push 5和po...
棧的基本操作
下面先實現站的基本功能,最後通過乙個test來測試下方法是否實現 建個.c檔案 typedef struct seqstack 初始化 seqstack seqstackinit return null 判斷棧是否為空 int seqstackisempty seqstack s void seqs...