数据结构-优先队列与栈

Posted Earnoise

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构-优先队列与栈相关的知识,希望对你有一定的参考价值。

本文将解释优先队列与栈(不讲单调栈!但可以去文章里的链接去看~)

数据结构-优先队列与栈

今天不多BB,直接讲2个数据结构!

优先队列(priority queue)

优先队列没什么好说的,和队列相似,同样遵循FIFO,但优先队列中的数据按升序或者降序排列,定义如下:

#include <bits/stdc++.h>
#include <queue>                    // 队列头文件中有优先队列

priority_queue <typename, vector<typename>, less/greater<typename> > name;

具体解释一下,typename代表队列中存储的元素类型,less/greater代表升序/降序

对于优先队列,他的操作如下:

priority_queue <int, vector<int>, less<int> > s;
s.pop()                             // 弹出队列顶部的元素
s.push(x)                           // 在队列中弹入x
s.size()                            // int类型,返回s的大小
s.empty()                           // bool类型,如果s为空返回true,否则返回false
s.top()                             // 返回s的顶部元素

栈(stack)

栈也是是一种特殊的线性表,他的性质只允许元素从最后入,从最后出,所以他也满足FILO(First In Last Out)

性质,也就是先进后出。

PS:没有优先栈,只有单调栈,这是个很复杂的东西,可以去看这里的题解

我们也不是用函数来模拟了,直接讲:

#include <stack>                    // 栈的头文件
stack <typename> s;

s.pop()                             // 弹出栈顶部的元素
s.push(x)                           // 在栈中弹入x
s.size()                            // int类型,返回s的大小
s.empty()                           // bool类型,如果s为空返回true,否则返回false
s.top()                             // 返回s的顶部元素

以上就是本篇的全部内容啦!希望能给你带来新的认知!以上!

以上是关于数据结构-优先队列与栈的主要内容,如果未能解决你的问题,请参考以下文章

广度优先搜索

队列与栈的相互实现

队列与栈的区别

广度优先搜索(BreadthFirstSearch)& 迪克斯特拉算法 (Dijkstra's algorithm)

20172308《Java软件结构与数据结构》第三周学习总结

集训课程计划