今晚的月色温柔

导航

顺序栈的基本操作及应用

【输入形式】无
【输出形式】20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

【样例输入】
【样例输出】
【样例说明】
【评分标准】

#include <iostream>
using namespace std;
#include <stdlib.h>
#define STACKSIZE 10
#define INCRE 2
struct sqstack{
int *base;
int top;
int stacksize;
};
void initStack(sqstack &s){//注意top是int,base是指针
s.base=(int*)malloc(STACKSIZE*sizeof(int));
s.top=0;//构造一个空栈
s.stacksize=STACKSIZE;
}
bool stackEmpty(sqstack s){
return s.top==0;
}
bool stackFull(sqstack s){
return s.top>=s.stacksize;
}
void push(sqstack &s,int e){
if(stackFull(s))//栈满
s.base=(int*)realloc(s.base,(s.stacksize+STACKSIZE)*sizeof(int));
s.stacksize+=1;
s.base[++s.top]=e;
}
int pop(sqstack &s){//出栈
return s.base[s.top--];
}
int gettop(sqstack &s){//取顶
return s.base[s.top];
}

int main(){
sqstack s;
initStack(s);
for(int i=1;i<=20;i++){
push(s,i);
}
while(!stackEmpty(s)){
cout<<pop(s)<<" ";
}
return 0;
}

posted on 2020-10-31 14:23  1022  阅读(159)  评论(0)    收藏  举报