数据结构-5.队列-顺序队列

1. 队列是一个有序列表,可以用数组(顺序存储)或链表来实现(链式存储)

2. 遵循先入先出的原则,即先存入队列的数据,要先被取出,后存入队列的数据要后取出

front 是队列首的指针,rear 是队列尾的指针,红色部分表示加入的元素

第二幅图中,随着元素的加入,尾指针依次向后移动,首指针不动

第三幅图中,随着元素的取出,尾指针不动,首指针向后移动

3. 使用数组来模拟队列

用 maxSize 来表示队列的最大容量

使用 front 和 rear 来记录队列前后端的下标,front 随着数据输出而改变,rear 随着数据输入而改变

代码实现:

创建一个类
提供构造方法,用数组创建队列
判断队列是否已经满了
判断队列是否是空的
将数据加入队列,如果队列已经满了,添加失败,如果有空位,通过 rear 尾部指针来添加数据
从队列中得到数据,如果队列是空的,抛出异常,并终止该段代码
显示队列中的数据,注释部分位显示所有的数据,没有添加数据的部分会显示 0
显示当前队列首部的数据,如果队列是空的,抛出异常
验证一下可用性

(1)虽然已经完成,但存在一个重要的问题,即当前数组如果被装满,即使取出数据,也无法再次向其中添加新数据,数组中的每个空间只能使用一次,没有复用性,这个问题也叫顺序队列的“假溢出”问题

(2)可以使用取模算法来将其改造成环形队列,即当前队列满了之后,取出数据,首部向后移,再向尾部添加数据时,会添加到原来的首部,整个队列构成了一个类似环的结构

你可能感兴趣的:(数据结构-5.队列-顺序队列)