数据结构之 队列(Queue)的实现及简单操作

在生活中我们经常会遇到排队的事情,比如说排队买东西,大家依次站一个队,队头的人要比后面的人先买到东西,先到先得,然后买完东西就会离开这个队
而我们平时为了解决在比如说打客服电话,排队叫号之类的应用问题时我们就应用了 队列 这种数据结构,实现先到先得,先入先出的排队功能
队列(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
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值