在生活中我们经常会遇到排队的事情,比如说排队买东西,大家依次站一个队,队头的人要比后面的人先买到东西,先到先得,然后买完东西就会离开这个队
而我们平时为了解决在比如说打客服电话,排队叫号之类的应用问题时我们就应用了 队列 这种数据结构,实现先到先得,先入先出的排队功能
队列(Queue):是只允许在一端进行插入操作,在另一端进行删除操作的线性表。
队列也是一种特殊的线性表,是一种先进先出的线性表。允许插入的一端称为表尾(队尾),允许删除的一端称为表头(队头)。
基于队列只能在队尾插入,只能在队头删除的特性,使用链表来实现队列相比于顺序表更为合适,所以我们用单链表来实现队列
其次我们使用单链表来实现队列就要定义对内元素结点
typedef
int
DataType
;
typedef
struct
QueueNode
{
DataType
_data;
struct
QueueNode
* _next;
}
QueueNode
;
其次定义队列的结构体,包括两个指针_head和_tail分别指向队头和队尾和一个size来记录当前队列里面元素个数
typedef
struct
Queue
{
QueueNode
* _head;
//队头
QueueNode
* _tail;
//队尾
size_t
_size;
}
Queue
;
接着就是相关操作函数接口的声明
QueueNode
* BuyNewQueueNode(
DataType
x
);
//创建新的结点
void
QueueInit(
Queue
*
q
);
//队列的初始化
void
QueuePush(
Queue
*
q
,
DataType
x
);
//入队
void
QueuePop(
Queue
*
q
);
//出队
DataType
QueueFront(
Queue
*
q
);
//队头元素
DataType
QueueBack(
Queue
*
q