【算法笔记】队列与优先队列

14 篇文章 0 订阅

队列与优先队列

1.队列的概念

只允许在一端插入数据操作,在另一端进行删除数据操作的特殊线性表;进行插入操作的一端称为队尾(入队列),进行删除操作的一端称为队头(出队列);

队列具有先进先出(FIFO)的特性。

2.队列性质

  • **定义:**队列是限定只能在表的一端(队尾)进行插入,在表的另一端(队首)进行删除的线性表
    队尾(tail)——允许插入的一端
    队头(head)——允许删除的一端
  • 队列特点:先进先出(FIFO)
  • 队列中有效元素的个数:tail – head
  • **约定:**head指向第1个元素,tail指向最后元素的下个位置。(可以改变)

在这里插入图片描述

  • 出队)队首删除一个数的操作是head++;
  • 入队)队尾增加一个数(假设这个数是x)的操作是q[tail]=x; tail ++;
  • 空队列的判断条件:head == tail;

3.队列实现

在这里插入图片描述

队列结构实现:
struct queue
{
       int  data[100];  //队列的主体,用于存储内容
       int  head;   //队首
       int  tail;    //队尾
}

4.队列成员函数

C++队列queue类成员函数如下:

  • back()返回队尾元素
  • empty()如果队列空则返回真
  • front()返回队头元素
  • pop()删除队头元素
  • push()在队尾加入一个元素
  • size()返回队列中元素的个数

5.优先队列的概念

出队顺序和入队顺序无关,与优先级相关。主要区别普通队列在于出队,优先级高者出队。

C++优先队列priority_queue类成员函数如下

5.1出队是从大到小的顺序:大根堆

//默认是降序排列,大顶堆

priority_queue <int>q;

5.2出队是从大到小的顺序:小根堆

//升序队列,小顶堆
priority_queue <int,vector<int>,greater<int> > q;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值