顺序栈定义
#define MaxSize 50//占中元素最大个数
typedef struct {
int data[MaxSize];
int top;
}SqStack;
初始化
void InitStack(SqStack &S)
{
S.top=-1;
}
判断空
bool StackEmpty(SqStack S)
{
if(S.top==-1) return true;//空
else return false;
}
入栈
bool Push(SqStack &S,int e)
{
if(S.top==MaxSize-1) return false;
S.data[++S.top]=e;
return true;
}
出栈(后进先出,LIFO)
bool pop(SqStack &S,int x)
{
if (S.top==-1) return false;
x=S.data[S.top--];//先出栈,在指针下移
return true;
}
链栈的定义
typedef struct Linknode{
int data;
struct Linknode *next;
}*LiStack;
操作与链表类似,区别在于,把链表头看做栈顶,增删都只能在表头进行。
共享栈(两个顺序栈共享一个一维数组空间 ,两个栈从两端向中间延伸)