数据结构练习笔记——顺序栈的基本操作

顺序栈的基本操作

【问题描述】按照要求完成顺序栈的设计
【输入形式】无
【输出形式】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)<<"  ";
        }
}

记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。

posted @ 2023-07-23 10:06  某zhuan  阅读(70)  评论(0)    收藏  举报