mirror of
https://github.com/oxyanyano/2022-WangDao-CS-DS-Notes.git
synced 2026-02-02 18:29:00 +08:00
37 lines
1.2 KiB
Markdown
37 lines
1.2 KiB
Markdown
## 栈—— Stack
|
||
|
||
### 一、栈的定义
|
||
|
||
`栈`是线性表结构的一种,但是栈结构的插入与删除操作都只能从同一端进行,所以栈结构是一种受限制的线性表结构,数据的插入与删除符合LIFO的原则(也就是`后进先出`,`先进后出`)。
|
||
|
||

|
||
|
||
### 二、栈的基本操作
|
||
|
||
`注`:参数代“&”表示:方法运行完后,对参数修改的结果要`“带回来”`
|
||
|
||
对数据的操作:创销,增删查改
|
||
|
||
```c
|
||
InitStack(&S); //初始化表:构造一个空的栈S,分配内存空间
|
||
DestoryStack(&S); //销毁操作:销毁栈,并释放栈S所占用的内存空间
|
||
|
||
Push(&S,x); //进栈,若栈S未满,则将x加入使之成为新栈
|
||
Pop(&S,&x); //出栈,若栈S非空,则弹出栈顶元素,并用x返回
|
||
|
||
GetTop(S,&x); //读栈顶元素,若栈S非空,则将x返回栈顶元素
|
||
|
||
//其它常用操作
|
||
StackEmpty(S); //判空操作
|
||
```
|
||
|
||
### 三、存储结构
|
||
|
||
`顺序存储`和`链式存储`
|
||
|
||
### 四、栈分类
|
||
|
||
栈的顺序存储:顺序栈
|
||
|
||
栈的链式存储:链栈
|