一、顺序队
队的用法:先进先出
跟平时我们遇到的大多情况一样,队的主要思想就是先进先出,比如我去食堂打饭,我先排那么就是我先打到饭咯
顺序队:其实说白了就是一块空间用两个指针去指向,为了实现先进先出的功能
需要注意:这里的两个指针指向,每次入队,队尾指针++,每次出队,队头指针也是++
而且入队要考虑从无到有的情况,出队要考虑从有到无的情况
1、定义
队的定义
需要注意的是这里的front rear num都是整型,不是指针 ,后面画图的时候,将front和rear用一条直线连向空间,不是指向哦,不是指针,只是为了表示下标的位置
2、初始化
首先创建一个空队列,使它存在
3、入队
将一个数值入队,例如:EnQueue(cq,1)
4、出队
将一个数值出队到某一特定的空间中去(d),例如:DeQueue(cq,&d)
5、求队列长度
6、获取队头数据
7、判断一个队列是否为空
8、清空一个队
9、销毁一个顺序队
先清空,使其初始化,再释放申请的队的空间
10、打印一个顺序队
11、帮助理解图
二、链式队
每输入一个数据,开辟一块空间并入队,灵活存取
每出队一个数据,先保存要出队的数据,再将曾经为了保存这个数据开辟的空间释放掉,而且不能影响现有队列的结构和操作
1、链式队的定义
队中每个数据的功能先设置单一点,只能指向下一个数据,既不能双向,也不能循环
队中存放数据的数据结点的定义
“头结点”——队的定义
2、链式栈的初始化
3、入队
4、出队
5、求队列长度
6、获取队头元素
7、判断队列是否为空
8、清空队列
9、销毁队列
10、打印一个链式队
11、帮助理解图
三、主函数代码实现及运行结果演示
这个是gcc编译器调试结果示意图
以上是我对数据结构中栈内容的学习记录, 其中有说法不准确的地方欢迎各位朋友指出!