队列
1、定义:一种可以实现先进先出的存储结构都叫队列。即一端入一段出。(在两端操作,而栈是在一段进行操作)
2、分类
链式队列:用链表实现,就是在末尾增加了一个指向尾节点的指针。指向首节点的指针同front表示,不用head
静态队列:用数组实现。静态队列通常都必须是循环队列
循环队列的讲解:
(1)静态队列为什么必须是循环队列
因为当到达末尾时,front和rear都动不了了,只有是循环的才能继续移动。
(2)循环队列需要几个参数来确定:
front(头,删除元素,指向第一个元素)和rear(尾,增加元素,指向最后一个元素的下一个元素)。
(3)循环队列各个参数的涵义
1)队列初始化时:front和rear都是零
2)队列非空时:front指向队列的第一个元素,rear指向最后一个有效元素的下一个元素
3)队列空时:front和rear都指向同一个元素,但此元素不一定是第一个元素。
3、队列伪算法讲解
(1)入队伪算法(两部)
a:将值存如r所指向的位置
b:r=(r+1)%素组的长度
(2)出队伪算法
a:f=f(f+1)%数组的长度
(3)判断循环队列是否为空
如果front与rear的值相等则该队列一定为空。
(4