栈 队列 优先队列

栈 队列 优先队列

栈的定义: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Thread的join方法[通俗易懂]

    Thread的join方法[通俗易懂]Thread中的join方法主要的作用是让jion的线程加入当前线程,等加入的线程执行完之后才会执行当前线程。接下来看个例子:publicclassTestJoin{publicstaticvoidmain(String[]args)throwsInterruptedException{Threadt1=newThread(()->{try{Thr

    2022年6月3日
    27
  • 解决Mplayer播放srt、sub字幕乱码的方法

    解决Mplayer播放srt、sub字幕乱码的方法网上看到解决Mplayer播放srt、sub字幕乱码的方法,试了下,srt可以,效果也不错,虽然字体有点大。sub还没有试,可能还是不行,记得以前摆弄过。1.srt字幕要设置正确编码才行右键菜单—-属性设置—–字幕和OSD,在字幕一栏选择编码:简体中文(CP936),再在下面的多选框中选上”unicode字幕”这项.再在属性设置—–字体下编码选unico

    2022年7月11日
    29
  • 业务逻辑漏洞总结[通俗易懂]

    业务逻辑漏洞总结[通俗易懂]逻辑漏洞简介逻辑漏洞就是指攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。逻辑漏洞的破坏方式并非是向程序添加破坏内容,而是利用逻辑处理不严密或代码问题或固有不足。操作上并不影响程序运行,在逻辑上是顺利执行的。这种漏洞一般的防护手段或设备无法阻止,因为走的都是合法流量。也没有防护标准。逻辑漏洞分类越权漏洞密码修改密码找回验证码漏洞支付漏洞短信轰炸投票/积分/抽奖逻辑漏洞重要性常见的OWASP

    2022年5月24日
    43
  • Postgresql基础操作3-常用SQL命令

    Postgresql基础操作3-常用SQL命令

    2021年8月28日
    64
  • js刷新当前页面的方法_javascript高级编程教程

    js刷新当前页面的方法_javascript高级编程教程javascriptrefreshpage几种页面刷新的方法本节内容:Javascript刷新当前页面的方法与实例。window.location.reload(),window.histo

    2022年8月6日
    5
  • centos在设置时区

    centos在设置时区

    2022年1月15日
    44

发表回复

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

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