队列是一种delete的方式同栈不同的数据结构,遵循先进先出原则,因此对于队列我们需要它的head和tail两个属性来描述入队和出队。队列的结构如下
#define LENGTH 1000
typedef struct
{
int num[LENGTH];
int head;
int tail;
}queue;
这里把队列的长度宏定义了具体的数值,在实际应用时可以使用sizeof来获取,或以动态内存分配的方式来申请队列空间。
下面来看队列的两个操作:
void enqueue(queue q, int x)
{
q.num[q.tail] = x;
if (q.tail == LENGTH)
q.tail = 0;
else
q.tail++;
}
int dequeue(queue q)
{
int x = q.num[q.head];
if (q.head == LENGTH)
q.head = 0;
else
q.head++;
return x;
}
当队列中的元素全部出队时,我们令head = 0让队列对数据的获取”重新开始“。