赞
踩
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出
FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头
队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。
// 链式结构:表示队列
typedef struct QListNode
{
struct QListNode* _next;
QDataType _data;
}QNode;
// 队列的结构
typedef struct Queue
{
QNode* _front;
QNode* _tail;
}Queue;
这里呢,和之前数据结构的设计不太一样,QNode结构体是用来存放数据的,而Queue结构体是用来存放QNode结构体的指针的,这里有两个指针,因为QNode的结构是单链表,而队列是只有尾插的,单链表结构的尾插效率跟数组相比比较低,所以定义了一个tail指针,指向队列的尾指针,从而达到O(1)的插入效率。
void QueueInit(Queue* q)
{
assert(q)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。