队列是先进先出,直接和排队类比即可,队列的实现较堆栈要麻烦一些,比如用静态数组来实现队列,每次移除数据后原来的位置就空起了,使用一个指针front指向队列头部,用另一个指针rear指向队列尾部,比如一个5个元素的数组,删除3个元素后,本来数组还可以继续存入3个元素,但那3个元素则无法再次利用了。
为此,提出了环数组的概念:即当尾部下标移出数组时,就设置为0。front不再是固定的,而是跟随移除数据往后移动,front 和rear都是动态变化的,添加数据时rear也递增移动,删除数据时front向前移动。
real = (real + 1) % QUEUE_SIZE
那如何判断队列满和队列空呢?我们先来看一下这个过程:
当队列满时,头部指针front指向3,尾部指针指向2:
<