队列(queue):是一种思维,不是独有的数据结构
队列的规则:它是一种先进先出,后进后出的思维
队尾 rear: 允许插入数据的一端
队头 front: 允许删除数据的一端
队列也会有溢出问题:顺序队列有一个真溢出:里面的元素个数超过它的最大值,就真
的溢出了,假溢出问题:里面的元素个没有超过它的最大值,但是看起来也溢出了
入队的时候 rear++
出队的时候 front++
他们都是递增的,但是数组的个数不是无限的,因此就会出现这个问题
rear 达到最大下标,但是 num 还没有,我们必须要解决这个假溢出问题,因此我们设
计顺序队列的时候要设计循环队列,当我们没有设置循环的时候:rear >= front,但是循环
队列里面就会出现 rear < front 的情况
我们写顺序队列都是写的循环队列
链式队列:用链表实现这个队列,没有假溢出
front 就是链表的第一个
rear 就是最后一个
添加元素就是尾插
我们实现队列应该实现如下方法:
1 初始化一个队列: LinkedQueueInit
2 销毁一个队列 DestroyLinkedQueue
3 清空这个队列 ClearLinkedQueue
4 判断队列是否为空 LinkedQueueIsEmpty
5 返回队列的元素个数 LinkedQueueGetLength
6 返回队头元素但是不出来 LinkedQueueGetFront
7 入队 InQueue
8 出队 OutQueue
顺序队列的参考代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <stdint.h>
//栈的最大存储元素个数
#define ARRAYQUEUE_MAXNUM 5