顺序栈的基本操作
【问题描述】按照要求完成顺序栈的设计
【输入形式】无
【输出形式】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>
#include <stdio.h>
#define STACKSIZE 10
#define INCRE 2
struct sqstack{
int *base;
int top;
int stacksize;
};
void initStack(sqstack &s){
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+INCRE)*sizeof(int));
s.stacksize+=INCRE;
}
s.base[s.top++]=e;
}//进栈
int pop(sqstack &s){
s.top--;
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);
}//1~20顺序进栈
while(!stackEmpty(s)){
cout<<pop(s)<<" ";
}
}
记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。
标签:sqstack,int,top,笔记,base,基本操作,stacksize,数据结构 From: https://www.cnblogs.com/zhuannnn/p/17574725.html