基本概念
栈(STACK) ——一种限定性的数据结构,限定只能在表的一端进行插入和删除的线性表。
栈顶(TOP)——允许插入和删除的一端
栈底(BOTTOM)——不允许插入和删除的一端
栈是后进先出表(LIFO)
基本操作:
InitStacK
(s):设置一个空栈s。
StackEmpty (s):判断s是否是空栈。
如果栈空返回1,非空返回0。
Push(s,x):入栈操作;
在栈s中插入一个新的栈顶元素x。
Pop(s):出栈函数;删除栈顶元素。
GetTop (s):读取栈顶元素。
若栈为空,返回空值。
栈类型的实现
顺序栈——顺序表存储
链栈——链式存储
一顺序栈
存储特点
利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素
c语言中可用数组来实现顺序栈
设置栈顶指针Top


顺序栈的 C语言描述
# define MAXLEN 栈可能达到的最大长度
typedef struct {
ElemType elem[MAXLEN];//数组空间
int top ;
} SqStack ;
第一个操作:创建栈
status InitStack (SqStack *S)
{
S->top = -1;
return OK;
}
第二个操作:进栈
将元素x压入栈s中
status Push(SqStack *s,ElemType e){
if(s.top = = MAXLEN-1)
return ERROR ;//栈满
else { s->top++;
s->elem[s->top]= x ;
return OK;}
} //push
第三个操作:出栈
ElemType Pop(SqStack * s) {
if (s->top == -1)return (空元素);
else {
x= s.elem[s.top];
s.top -- ;
return(x)
}
} // Pop