顺序存储结构
所谓顺序存储结构就是用一组地址连续的存储单元依次存放从队头到队尾的元素。
声明两个指针rear
、front
分别用来指示队尾元素的下一位置和队头元素的位置。
初始化时rear = front = 0
,插入新的元素时尾指针加1,元素出队列时队头指针加1。
不过这样做有个问题,不论是入队还是出队,队头或队尾指针都是加1,这样做有一个问题,就是元素出队所空出的空间无法被重新利用了。
尽管队列中实际存储的元素个数远远小于存储空间的规模,但是仍不能做入队操作。这种现象称为假上溢。
循环队列
循环队列是队列的顺序存储结构的一种实现方式。它通过将顺序队列想象为一个首尾相接的圆环,来克服假上溢的问题。
循环队列中无法通过头尾指针相同来判断队列的状态究竟为空还是满,因为这种情况下可能为空也可能为满。
循环队列中通过少用一个元素的空间,以“头指针在尾指针的下一位置时”作为队列为满的判断标志。