数据结构系列(4)堆栈与队列

4 堆栈与队列

4.1 堆栈

堆栈是一组相同数据类型数据的集合,并且拥有后进先出的特性,所有的操作都在堆栈顶端进行。将元素放入堆栈顶端称为压入,将元素从堆栈顶端取出称为弹出。

堆栈的应用包括递归的调用和返回、二叉树和森林的便利操作、调用子程序和从子程序返回、算术表达式的转换和求值、中央处理单元的中断处理以及堆栈计算机等等。

堆栈的基本操作

堆栈的操作 说明
CREATE 创建一个控堆栈
PUSH 把数据压入堆栈顶端,并返回新堆栈
POP 从堆栈顶端弹出数据,并返回新堆栈
EMPTY 判断堆栈是否为空堆栈,是则返回true,反之为false
FULL 判断堆栈是否已满,是为true,否为false

堆栈类样板的实现

所谓样板,主要是提供”参数化类型“的功能,可将函数或类中通用的类型视为一种参数,当利用样板建立函数或类时,只需将特定的数据类型带入,即可产生该特定类型的函数或类,所以样板的设计概念也被称为”泛型程序设计“,也称”类属编程“。
设计类时,将数据类型以样板参数取代,在使用时再指定数据类型,这个类称为类样板。在程序中,将会根据声明对象时所指定的数据类型,来建立适用该数据类型的类。类样板的声明格式如下所示:

template<class样板形式参数1,class样板形式参数2>>
class 类名称
{
//类内程序块
}

声明好类样板后,就要用类样板来产生对象,对象的产生方式如下所示:

类名称<数据类型>对象名称;
或
类名称<数据类型>对象名称();

4.2 算术表达式的表式法

在程序中,经常需要将变量或常数等操作数,用系统预先定义好的运算符来进行各种算术运算、逻辑运算与关系运算,以求出一个结果。程序中这些操作数和运算符的组合就称为表达式。

根据运算符在表达式中的位置,表达式可分为:
1. 中序法:运算符在两个操作数中间
2. 前序法:运算符在操作数的前面
3. 后序法:运算符在操作数的后面


4.3 队列

队列是一种先进先出的数据结构,和堆栈一样都是一种有序线性表的抽象数据类型。

队列的应用:计算机的模拟、CPU的作业调度、外围设备联机并发处理系统的应用与图遍历的广度优先搜索法等

队列的基本操作

队列的操作 说明
CREATE 创建控队列
ADD 将新数据加入队列的末尾,返回新队列
DELETE 删除队列前端的数据,返回新队列
FRONT 返回队列前段的值
EMPTY 若队列为空集合,返回true,否则返回false

环形队列
所谓环形队列,其实就是一种环形结构的队列,它仍是 Q(0:n1) 的一位数组,同时 Q(0) Q(n1) 的下一个元素,这就可以解决无法判断队列是否已出的问题。指针front永远以逆时针方向指向队列中第一个元素的前一个位置,rear则指向队列当前的最后位置。

双向队列
所谓双向队列为一有序性表,加入与删除可在队列的任意一端进行。

优先队列
优先队列为一种不必遵守队列特性的有序线性表,其中的每一个元素都赋予一个优先级,加入元素时可任意加入,但有最高优先级者则最先输出。

发布了7 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/hanxu117160/article/details/70741744