
说优先队列,其实算不上是队列,更像是一个数组伍贺,每一次,你给他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}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)