#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define maxsize 10 // 定义栈中元素的最大个数
typedef struct
{
int data[maxsize]; // 静态数组存放栈中元素
int top; // 栈顶指针(记录的是数组的下标)
} sqstack;
void initstack(sqstack &s)
{
s.top = -1; // 初始化栈顶顶针,因为一开始数组的0没有放元素,所以top=0是不合理的,所以top=-1
}
void teststack()
{
sqstack s;
initstack(s);
}
bool stackempty(sqstack s)
{ // 判断栈是否为空
if (s.top == -1)
{
return true;
}
else
{
return false;
}
}
//新元素入栈
bool push(sqstack &s,int x){
if(s.top==maxsize-1){//栈满,报错
return false;
}
s.top =s.top +1; // 指针先加1;
s.data[s.top]=x;//新元素入栈
return true;
}
//出栈
bool pop(sqstack &s,int &x){
if(s.top==-1){ // 栈空,报错
return false;
}
x=s.data[s.top]; //栈顶元素先出栈
s.top=s.top -1; //指针再减1;
return true;
}
//读栈操作
//跟出栈的操作几乎相同,唯一的不同的是不会让top指针--
bool gettop(sqstack s,int &x){
if(s.top ==-1){
return false;
}
x=s.data[s.top];
return true;
}
int main()
{
sqstack s;
return 0;
}
栈是使用了顺序表的形式来做,当然缺点也会有,就是栈的大小不可变,若分的内存过大,就会造成资源浪费。所以可以考虑使用共享栈的方式来编写,就是准备两个top指针,一个top0指向-1.一个top1指向maxsize,这样就可以合理的利用栈的空间了,当然判断栈满的空间的代码是 s.top0 +1 ==s.top1