InitStack(&S) DestroyStack(&S) StackLength(S) StackEmpty(s) GetTop(S, &e) ClearStack(&S) Push(&S, e) Pop(&S, &e) StackTravers(S, visit()) 1) 初始化操作InitStack((&S) 功能:构造一个空栈S;
2) 销毁栈操作DestroyStack(&S) 功能:销毁一个已存在的栈; 3) 置空栈操作ClearStack(&S) 功能:将栈S置为空栈;
4) 取栈顶元素操作GetTop(S, &e) 功能:取栈顶元素,并用e 返回; 5)进栈操作Push(&S, e) 功能:元素e进栈;
6)退栈操作Pop(&S, &e) 功能:栈顶元素退栈,并用e返回; 7)判空操作StackEmpty(S)
功能:若栈S为空,则返回True,否则返回False;
top
top base 空栈
top base A base E D C B A top base B A A进栈 B C D E 进栈 E D C 出栈
栈操作图示
三 栈的存储实现
与线性表类似,栈也可以用顺序结构或链式结构存储。
1 栈的顺序存储结构
栈的顺序存储结构也是利用一组连续的内存单元依次存放自栈底到栈顶的数据元素,栈顶元素的位置由一个称为栈顶指针的变量指示 。栈的顺序存贮结构也称为顺序栈。 2. 顺序栈的类型定义
#define STACK_INIT_SIZE 100 // 栈存储空间的初始分配量 #define STACKINCREMENT 10 // 栈存储空间的分配增量 typedef struct{ SElemType *base; //栈空间基址 SElemType *top //栈顶指针 int stacksize; //当前分配的栈空间大小
}SqStack;
//以sizeof(SElemType)为单位
SqStack:结构类型名;SqStack类型的变量是结构变量,它的三个域分别是:
base:称为栈底指针,指向栈底位置;
top:称为栈顶指针,约定栈顶指针指向栈顶元素的下(后面)一个位置;
Stacksize:用于存放当前分配的存储空间的大小;
数据结构与算法课程数据结构03
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)