首先我们要理解队列所遵循的规则就是“先进先出”。我们可以看到生活中排队的例子(如:排队买票、排队打饭)其实就是一个队列。
如同栈一样,为了保证队列的安全性,我们对队列的操作也只有三种:入队列、出队列、取队首元素。
这篇文章主要是用数组来实现一个队列,为了使队列的空间能充分利用,所以用线性队列来模拟环形队列来实现。
#define SeqQueueMaxSize 1000
typedef char SeqQueueType;
typedef struct SeqQueue
{
SeqQueueType data[SeqQueueMaxSize];
size_t head;
size_t tail;
size_t size;
}SeqQueue;
宏SeqQueueMaxSize 是设定了整个数组内可以存放的个数,head 是队首元素在数组内的下表,tail是队尾元素在数组内的下表,size是真个队列中我们存的元素的总个数。
一.队列的初始化
void SeqQueueInit(SeqQueue* q)
{
if (q == NULL)
return;
q->size = 0;
q->head = 0;
q->tail = 0;
return;
}
首先要对指针的非法性判断。
然后将里面的个数置0。我头和尾从0开始。
二.队列的销毁
void SeqQueueDestory(SeqQueue* q)
{
if (q == NULL)