栈是限定仅在表尾进行插入和删除操作的线性表。
栈的结构定义:
typedef int SElemType; /* SElemType类型根据情况而定,这里假设为int */
typedef struct
{
SElemType data[MAXSIZE];
int pop; /* 栈顶指针 */
}SqStack;
进栈:
/* 插入元素e为新的栈顶元素 */
Status Push( SqStack *S, SElemType e )
{
if( S->top == MAXSIZE - 1 ) /* 栈满 */
{
return ERROR;
}
S->top++; /* 栈顶指针增加1 */
S->data[S->top] = e; /* 将新插入元素赋值给栈顶空间 */
return OK;
}
出栈:
/* 若栈不为空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR */
Stack Pop( SqStack *S, SElemType *e )
{
if( S->top == -1 )
return ERROR;
*e = *S->data[S->top]; /* 将要删除的栈顶元素赋值给e */
S->top--; /* 栈顶指针减1 */
return OK;
}