栈和队列:链式映象的数据结构
需积分: 34 153 浏览量
更新于2024-07-14
收藏 6.36MB PPT 举报
"链队列——链式映象"
**栈的定义和特点**
栈是一种限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。栈的修改是按后进先出的原则进行的,因此,栈称为后进先出表(LIFO)。
**栈的类型定义**
栈的抽象数据类型的定义如下:
```
ADTStack{
数据对象:
D={ai|aiElemSet,i=1,2,,n,n≥0}
∈
数据关系:
R1={<ai-1,ai>|ai-1,aiD,i=2,,n}
∈
/*约定an端为栈顶,a1端为栈底。*/
基本操作:
ADTStackInitStack(&S)
DestroyStack(&S)
StackLength(S)
StackEmpty(s)
GetTop(S,&e)
ClearStack(&S)
Push(&S,e)
Pop(&S,&e)
StackTravers(S,visit())
}
```
**栈的实现**
栈的顺序存储结构简称为顺序栈,它是运算受限的线性表。因此,可用数组来实现顺序栈。因为栈底位置是固定不变的,所以可以将栈底位置设置在数组的两端的任何一个端点;栈顶位置是随着进栈和退栈操作而变化的,故需用一个整型变量top来指示当前栈顶的位置,通常称top为栈顶指针。
**栈的应用**
栈的应用非常广泛,例如,一叠书或一叠盘子。栈也广泛应用于编译器、解释器、计算器等领域。
**队列的定义和特点**
队列是一种特殊的链表,队列的元素按先进先出的原则进行插入和删除操作。队列的应用也非常广泛,例如,打印机队列、网络队列等。
**队列的类型定义**
队列的抽象数据类型的定义如下:
```
ADTQueue{
数据对象:
D={ai|aiElemSet,i=1,2,,n,n≥0}
∈
数据关系:
R1={<ai-1,ai>|ai-1,aiD,i=2,,n}
∈
/*约定an端为队首,a1端为队尾。*/
基本操作:
ADTQueueInitQueue(&Q)
DestroyQueue(&Q)
QueueLength(Q)
QueueEmpty(Q)
GetFront(Q,&e)
ClearQueue(&Q)
Enqueue(&Q,e)
Dequeue(&Q,&e)
QueueTravers(Q,visit())
}
```
**队列的实现**
队列的实现可以使用链表或数组来实现。链式队列的实现可以使用链表来存储队列的元素,而顺序队列的实现可以使用数组来存储队列的元素。
**队列的应用**
队列的应用非常广泛,例如,打印机队列、网络队列等。队列也广泛应用于操作系统、数据库、_compiler等领域。
2014-05-30 上传
2021-03-10 上传
2021-09-30 上传
2024-05-27 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2009-06-03 上传
2007-07-16 上传
雪蔻
- 粉丝: 30
- 资源: 2万+
最新资源
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南12
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南11
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南10
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南09
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南08
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南07
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南06
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南05
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南04
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南03
- 大学新视野英语答案 DOC
- LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南01
- C++ 如何编写优秀代码
- 区分硬盘和U盘驱动器
- 基于ANN的自适应PID控制器的仿真研究及单片机实现探讨
- mtlab神经网络工具箱应用简介