栈是一种线性表;首先它是一种表,所以可以有顺序表和链式表的区别,它是一种操作收到限制的表,只能在表的一端进行插入和删除操作,他在程序设计中应用广泛,递归和嵌套以及迷宫等问题都是以栈空间为雏形的。
从图中也可以看出来,栈空间的特点是先进后出。
栈的一般操作多为插入和删除,也就是出栈和入栈。但要判断插入是否会溢出,删除是否以及没有可删除的了。
#include<iostream>
#define M 100
using namespace std;
typedef struct stack
{
int arr[M];
int p;
}stacktype;//别名设置
bool judge(stack* s);//判断栈空
bool judgefree(stack* s);//判断栈满,是否会溢出
bool push(stack* s, int x);//插入栈
int pop(stack* s);//出栈
int main()
{
stacktype *s=new stacktype;
s->p = -1; //栈的初始化
return 0;
}
bool judge(stack* s)
{
if (s->p == -1)
{
return (false);
}
else
return (true);
}
bool judgefree(stack* s)
{
if (s->p==M-1)
{
return (false);
}
else
return (true);
}
bool push(stack* s, int x)
{
if (judgefree(s))//未满则操作
{
s->p++;
s->arr[s->p] = x;
}
else
return false;
}
int pop(stack* s)
{
if (judge(s))//未空则操作
{
int x;
x = s->arr[s->p];//取
s->p--;//移
return x;
}
else
return -1;//此处设置可以根据情况来定
}