栈(stack)很多人都不会太陌生,说到栈大家一定会想到一句话:后进先出(Last In First Out)。这句话就是栈的一个本质特点,其实栈就是一个只能在一端进行插入、删除的特殊的线性表。栈有栈底和栈顶,元素从栈顶出。
下面首先说说栈的顺序存储结构。即用一个StackSize大小的数组来存储整个栈,那么下标为0的元素就是栈底元素,用top变量来指示栈顶元素,因为数组的大小为StackSize,所以0<= top <StackSize。当top=0时表示该栈只有一个元素,top=StackSize-1时表示栈满,top=-1时,表示栈为空栈。
栈的顺序存储结构定义如下:
typedef int SElemType ;
typedef struct
{
SElemType data[MAXSIZE] ;
int top ;
}SqStack ;
顺序存储结构下的进栈操作:
Status Push(SqStack * S , SElemType e)
{
if( S->top == MAXSIZE)
return ERROR ; //满栈
S->top++ ;
S->data[S->top] = e ;
return OK ;
}
顺序存储结构下的出栈操作:
Status Pop(SqStack *S , SElemType e)