队列的定义和实现
队列的定义
队列是一种先进先出的线性表,它只允许在表的一端进行插入,在另一端进行删除,在队列中,允许插入的一端为队尾,允许删除的一端为对头
假设q=(a1,a2,a3……an),a1为队头,an为队尾,元素按a1,a2,a3……an的顺序进入,退出队列也只能按照这个次序
队列顺序结构的实现
一、队列的存储
队列就是一个特殊的线性表,所以依然用结构体来进行存储
//存储
typedef struct queue
{
ElemType* data;
int front;//队头指针(数组下标)
int rear;//队尾指针(数组下标)
}Queue;
二、队列的初始化
//初始化
Queue* initQueue()
{
Queue* q = (Queue*)malloc(sizeof(Queue));
q->data = (ElemType*)malloc(sizeof(ElemType) * MAXSIZE);
q->front = 0;
q->rear = 0;
return q;
}
三、判断队列是否为空
//判断空表
int isEmpty(Queue* q)
{
if (q->front == q->rear)
{
printf("Empty\n");
return 1;
}
else
{
return 0;
}
}
四、出队
数据在队头处出队
//出队
ElemType dequeue(Queue* q)
{
if (q->front == q->rear)
{
printf("Empty\n");
return 0;
}
ElemType e = q->data[q->front];
q->front++;//数组下标后移
return e;
}
五、入队
在入队之前,应先判断队列是不是真的满了,有可能出现front指向3,但它前面的0,1,2处都为空,如果出现这种情况应先调整队列
//调整队列
int queueFull(Queue* q)
{
if (q->front > 0)
{
int a = q->front;
for (int i = q->front;i <= q->rear;i++)
{
q->data[i - a] =

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



