定义
作为一种限定性线性表,是将线性表的插入和删除运算限制为仅在表的一端进行。
表中允许进行插入、删除操作的一端称为栈顶,表的另一端被称为栈底。栈的插入称为进栈或入栈,删除操作称为出栈或退栈。
特点:后进先出(先进后出)
顺序栈
顺序存储结构实现,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。通常以top=-1表示空栈。
C语言描述:
#define Stack_Size 50
typedef struct
{
StackElementType elem[Stack_Size];
int top;
}SeqStack;
基本操作:
- InitStack(S)初始化一个新的栈;
void InitStack(SeqStack *S)
{
S->top=-1;
}
- Empty(S)栈的非空判断,栈S不空,返回true,否则返回false;
int IsEmpty(SeqStack *S)
{
return (S->top==-1?TRUE:FALSE);
}
- 判栈满
int IsFull(SeqStack *S)
{
return (S->top==Stack_Size-1?TRUE:FALSE);
}
- Push(S,x)入栈:在栈S顶部插入元素x,若栈满,返回false,否则返回true;
int Push(SeqStack *S,StackElementType *x)
{
if(S->top==-1)
return FALSE;
else
{
*x=S->elem[S->top];
S->top--;
return TRUE;
}
}
- Pop(S)出栈:若栈不空,返回栈顶元素,并从栈顶中删除该元素,否则返回空元素NULL;
int Pop(SeqStack *S,