栈 队列 优先队列

栈 队列 优先队列

栈的定义:stack<数据类型> + 栈的名称
队列的定义: queue<数据类型> + 队列名称
代码实现(以int为例)

stack <int > sta ;
queue <int > que ;

栈名sta,队列名que
sta. push ();//元素入栈
que. push ();//元素队列
 
sta.pop ();//最顶端元素出栈
que.pop ();//最底端元素出队列
 
sta.top ();//查询栈顶元素
que. front ();//查询队列顶端元素
 
sta. empty ();//判断栈是否为空
que. empty ();//判断队列是否为空
 
while (! sta. empty ()) sta.pop ();//栈的清空
while (! que. empty ()) que.pop ();//队列的清空

优先队列
我们知道了队列是先进先出,那么优先队列则不一样了,进
的顺序不能决定出的顺序,优先队列出的顺序是按照自己设
置的优先等级来出队列的,如果自己不设置优先级的话,默
认优先级为越大优先级越高。

priority_queue <int > que ;
que .push ();
que .pop ();
que .top ();//top返回优先级最高的数。注意 不能用front!
que .empty ();

我们知道既然默认的优先级是越大优先级越高,那么我们如何来
更改这个优先级呢?

//int 型优先级的设置,一定要注意最后两个>之间有一个空格,否则编译时会报错

priority_queue <int ,vector <int >, greater <int > > que ;
priority_queue <int ,vector <int >,less <int > > que ;

//样例

#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
priority_queue <int ,vector <int>, greater<int> > q ;//从小到大输出 
int main()
{
	int n,x;
	cin>>n;
	while(n--)
	{
		cin>>x;
		q.push(x);
	}
	while(! q.empty())
	{
		cout<<q.top()<<endl;
		q.pop()	;
	}
	return 0;
}

//结构体(和cmp类似)优先级的设置

struct node
{
int c,d;
};
//通过对<的重载,实现队列内按照升序排列,此时小的优先级高,优先级高的会先出队列
bool operator <( const node & a, const node & b)
{
if(a.c==b.c) return a.d<b.d;
return a.c<b.c;
}
priority_queue <node > que ;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114921.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月27日 上午10:00
下一篇 2021年9月27日 上午11:00


相关推荐

  • datagrid控件详解_datagridview控件不显示数据

    datagrid控件详解_datagridview控件不显示数据解决方法:在代码中必须有下列突显部分.privatevoidInitializeComponent()  {      this.bnRefresh.Click+=newSystem.EventHandler(this.bnRefresh_Click);   this.bnAdd.Click+=newSystem.EventHandler(this.bnAdd_Clic

    2022年10月13日
    5
  • java Object转Map 工具类

    java Object转Map 工具类importjava beans BeanInfo importjava beans Introspector importjava beans PropertyDesc importjava lang reflect Method importjava util HashMap importjava util Map importorg slf4j Logger

    2026年3月17日
    2
  • java 生成二维码

    java 生成二维码最近在做一个自提的需求 当用户下单后给该笔订单生成一个二维码 当用户去实体店自提的时候 实体店扫用户提供的二维码 这样该笔订单就算完成了 1 相关的依赖 dependency groupId com google zxing groupId artifactId javase artifactId version 3 3 0 amp l version dependency

    2026年3月17日
    2
  • rpc服务器不可用自动重启,出现RPC服务器不可用的解决方法

    rpc服务器不可用自动重启,出现RPC服务器不可用的解决方法出现 RPC 服务器不可用的解决方法 RPC 服务器 是指 RemoteProced 中文释义为 RFC 1831 远程过程调用协议 一种通过网络从远程计算机程序上请求服务 而不需要了解底层网络技术的协议 当 RPC 服务出现问题的时候 我们打开很多程序都会出现 PRC 服务器不可用的情况 RPC 服务器不可用有以下几个可能及解决方法 一 RPC 服务没有启动或正常启动 我们可以通过

    2026年3月17日
    2
  • Java Calendar获取年、月、日、时间[通俗易懂]

    Java Calendar获取年、月、日、时间[通俗易懂]Calendarc=Calendar.getInstance(TimeZone.getTimeZone(“GMT+08:00”));//获取东八区时间intyear=c.get(Calendar.YEAR);//获取年intmonth=c.get(Calendar.MONTH)+1;//获取月份,0表示1月份intday=c.get(Calend…

    2022年5月2日
    46
  • mysql != 索引_Mysql语法

    mysql != 索引_Mysql语法转:https://www.cnblogs.com/huanzi-qch/p/15238604.html介绍通常情况下,全文检索引擎我们一般会用ES组件(传送门:SpringBoot系列——ElasticSearch),但不是所有业务都有那么大的数据量、那么大的并发要求,MySQL5.7之后内置了ngram分词器,支持中文分词,使用全文索引,即可实现对中文语义分词检索MySQL支持全文索引和搜索:  MySQL中的全文索引是FULLTEXT类型的索引。  全文索引只能用于InnoDB或My

    2022年8月24日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号