3.2栈的顺序结构
顺序栈是用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈操作的特殊性,还必须附设一个位置指示器 top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。
通常以 top=-1 表示空栈。顺序栈的存储结构可以用 C 语言中的一维数组来表示。
栈的顺序存储结构定义如下:
1、初始化
void InitStack(SeqStack *S)
{/*构造一个空栈 S*/
S->top= -1;
}
2、进栈
int Push(SeqStack * S, StackElementType x)
{
if(S->top== Stack_Size-1)
return(FALSE); /*栈已满*/
S->top++;
S->elem[S->top]=x;
return(TRUE);
}
3、出栈
int Pop(SeqStack * S, StackElementType *x)
{ /* 将栈 S 的栈顶元素弹出,放到 x 所指的存储空间中 */
if(S->top= =-1) /*栈为空*/
return(FALSE);
else
{
*x= S->elem[S->top];
S->top--; /* 修改栈顶指针 */
return(TRUE);
}
}
4、取栈顶元素。
int GetTop(SeqStack *S, StackElementType *x)
{ /* 将栈 S 的栈顶元素弹出,放到 x 所指的存储空间中,但栈顶指针保持不变 */
if(S->top==-1) /*栈为空*/
return(FALSE);
else
{
*x = S->elem[S->top];
return(TRUE);
}
}