特殊队列(1)——优先队列

特殊队列(1)——优先队列,第1张

哈,我豁出去了,没想到会这没早地写优先队列

说优先队列,其实算不上是队列,更像是一个数组伍贺,每一次,你给他sort()一下,完全违背了FIFO(先进先出)的规则。而且这个sort,还是默认大到小的。

那我就来说说吧。

1.头文件,跟基本队列一样

或者说,你可以一把捞所有的头文件,真是方便

我的话,更倾向于后者,懒人懒办毕胡法。

2.定义

给个格式,找了我半天

看不懂也没事,我也有些看不懂。

正常人一点的,是这样的

再说明白一点,就是——

升序:

降序:

注意两个">>"之间的空格,别打成">>"了。

给个样例——

升序队列:

降序队列:

3.然后是 *** 作

跟普通的FIFO特像,如果读过我的前一篇文章,你会很明白为什么是“特像”,却不是“一样”。

先给张表,这是优先队列的

再来看看我之前的那次,这是普通队手橘拦列的——

区别就在这儿

一个是

一个是

优先队列,没有求队尾元素值的函数。

样例嘛

加个q就行了,打字的同志说,简单的很!

4.好勒,总结一下

优先队列,不是FIFO,而是FI,“best”O,简单的很,会了queue,priority也不怕。

#include <iostream>

#include <queue>

using namespace std  //这几个头文早或件必不可少

int main()

{

 queue<int> q  //使用前需定义一个queue变量,且定义时已经初始化

 while(!q.empty()) q.pop()  //重复使用时,用这个初始化

 q.push(1)        //进队列

 q.pop()  搭睁祥        //出队列

 int v=q.front()  //得到队首的值

 int s=q.size()   //得到知搏队列里元素个数

 return 0

}

你的头文件,里面包括队列的初始化裂昌腔,判断空队列,插入删迅大除节点,清空队肆衫列 *** 作。使用时候把头文件加载到你的程序中就可以了。#define QueueSize 100\x0d\x0atypedef struct Squeue\x0d\x0a{\x0d\x0a DataType queue[QueueSize]\x0d\x0a int front,rear\x0d\x0a}SeqQueue\x0d\x0avoid InitQueue(SeqQueue *SQ)\x0d\x0a{\x0d\x0a SQ->front=SQ->rear=0\x0d\x0a}\x0d\x0aint QueueEmpty(SeqQueue SQ)\x0d\x0a{\x0d\x0a if(SQ.front==SQ.rear)\x0d\x0a return 1\x0d\x0a return 0\x0d\x0a}\x0d\x0aint EnterQueue(SeqQueue *SQ,DataType x)\x0d\x0a{\x0d\x0a if(SQ->rear==QueueSize)\x0d\x0a return 0\x0d\x0a SQ->queue[SQ->rear]=x\x0d\x0a SQ->rear+=1\x0d\x0a return 1\x0d\x0a}\x0d\x0aint DeleteQueue(SeqQueue *SQ,DataType *e)\x0d\x0a{\x0d\x0a if(SQ->front=SQ->rear)\x0d\x0a return 0\x0d\x0a else\x0d\x0a {\x0d\x0a *e=SQ->queue[SQ->front]\x0d\x0a SQ->front+=1\x0d\x0a return 1\x0d\x0a }\x0d\x0a}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/12294324.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存