堆栈的定义
堆栈(stack)可以当作具有一定约束的线性表,其插入和删除操作都是作用在栈顶(top)端点位置。插入数据称为压入栈(push),删除数据称为弹出栈(pop),堆栈是“后入先出(Last In First Out)
堆栈的实现
堆栈的存储结构可以采用顺序和链式两种实现形式。
1.顺序存储
堆栈的顺序存储由一个一维数组和一个记录顶层位置的变量以及一个记录堆栈最大容量的变量组成。
/*顺序栈描述*/
typedef int Position;
typedef struct SNode *PtrToSNode;
struct SNode{
ElementType *Data; /*存储元素*/
Position Top; /*栈顶指针*/
int MaxSize; /*堆栈最大容量*/
};
/*顺序栈创建*/
Stack CreateStack(int MaxSize)
{
Stack S = (Stack)malloc(sizeof(struct SNode));
S->Data = (ElementType*)malloc(MaxSize*sizeof(ElementType));
S->Top=-1;
S->MaxSize = MaxSize;
return S;
};
/*入栈操作*/
/*判断是否栈满*/
bool I