堆栈(Stack):顺序存储运算数,需要时倒序输出
具有一定操作约束的线性表,只在栈顶做插入删除。
插入:入栈
删除:出栈
后入先出:Last In First Out(LIFO)
栈的顺序存储结构通常由一个一维数组和一个记录栈顶元素位置的变量组成
#define MaxSize//存储数据元素的最大个数
typedef struct SNode *Stack;
struct SNode
{
ElementType Data[MaxSize];
int Top;//栈顶元素的数组下标
};
主要操作:
1.Stack CreateStack(int MaxSize):生成空堆栈,其最大长度是MaxSizehttp://2.int IsFull(Stack S,int MaxSize):判断堆栈S是否已满
3.void Push(Stack S,ElementType item):将元素item压入堆栈
top==-1表示堆栈空
void Push(Stack PtrS,ElementType item)
{
if(PtrS->Top==MaxSize-1)
{
printf("堆栈满");
return;
}
else
{
PtrS->Data[++(PtrS->Top)]=item;
return;
}
}
http://4.int IsEmpty(Stack S):判断堆栈S是否为空
5.ElementType Pop(Stack S):删除并返回栈顶元素
ElementType Pop(Stack PtrS)
{
if(PtrS->Top==-1)
{
printf("堆栈空");
return ERROR;//ERROR是ElementType的特殊值,标志错误
}
else
return (PtrS->Data[(PtrS->Top)--]);
}