队列
队列也是一种有序数据项构成的数据结构,和栈不相同的是,操作队列的数据项是一边进一边出,只能在队尾(rear)插入数据项在队头(front)移出数据项并且栈的数据项是后进先出(last in first out),而队列是先进先出(first in fisrt out)。
可以用数组简单实现一个队列,定义两个下标front和rear代表队列的首尾,数据项存储在数组中的data[front]…data[rear]。
队列的存储方式也有两种可以选择:
1.让下标front恒为数组data的起始位置data[0],每次有元素出列,让后面的元素不断往前移。
2.让队列形成一个类似环的结构,当不断有元素出列,front下标前的空间被空出来;又不断有元素进列,当rear走到数组的末端的时候,就可以利用front前端的空间,重新再利用空间。也就是说队列的第一个元素紧跟着最后一个元素的后面,而队列最后一个元素的下一个元素就是队列的第一个元素。这种方式相对第一种效率就比较高一些。
A | B | |||
0 | 1 | 2 | 3 | 4 |
假设现在有个data数组实现的队列,已经有A、B两个元素进入队列,front指向下标0,rear指向下标1。
当再加入C、D、E三个元素又将A出列,队列如下图所示
B | C | D | E | |
0 | 1 | 2 | 3 |