环形队列
环形队列是一种常用的数据机构,其结构示意图如下
它的首尾相连,其中head指向队列的首元素,tail指向队列的尾元素,数据从队列尾部入队,从队列的头部出队;
其具体的实现方式常用的有环形链表和数组;下面的代码采用数组来实现,将下标对数组长度求余而实现环形入队和出队;
与上图不同的一点是,下面的实现中,使用 front 代表 队列头元素的下标,而用 rear 代表 队列尾元素的下一个元素的下标;
C语言实现:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct queue_type queue_t;
struct queue_type {
int capacity; /*环形队列的容量*/
int size; /*队列中当前元素的个数*/
int front, rear; /*分别表示队列头和尾的下标*/
int *qarray;
};
/*队列操作*/
queue_t *crea