栈
定义
栈(stack)是限定仅在表尾进行插入和删除操作的线性表。
表尾端称为栈顶(top),表头端称为栈底(bottom)。
不含元素的空表称为空栈。
基本特点:
1。先入后出,后入先出。(LIFO)
2.除头尾节点之外,每个元素有一个前驱,一个后继。
表示和实现
栈有两种存储表示方法:顺序栈和链栈
顺序栈的数据结构
#define STACK_INT_SIZE //存储空间分配初始量
#define STACKINCREMENT //存储空间分配增量
typedef struct{
SElemtype *base;//栈底指针
SElemtype *top;//栈顶指针
int stacksize;//栈已分配的空间大小
}SqStack;
base始终指向栈底;top指针初值指向栈底(top=base),每插入新的元素,top指针增1(非空栈中的栈顶指针始终在栈顶元素的下一个位置上)
构建空栈
bool InitStack (SqStack &S){
S.base=(SElemtype *)malloc(STACK_INT_SIZE*sizeof(SElemtype));
if(!base) return 0;
S.top=S.base;
S.stacksize=STACK_INT_SIZE;
return 1;
}
读栈顶元素
SElemtype GetTop(SqStack &S){
SElemtype e=*(S.top-1);
return e;
}