首页 > 技术文章 > 队列和栈部分

Accepting 2019-07-18 23:31 原文

队列和栈的头文件以及常用函数

#include<stack>  先进后出

using namespace std;

stack <类型> s(变量);

s.pop()  删除栈顶元素

s.empty() 判断栈是否为空,为空返回1

s.push(i)  将i压入栈中

s.top()  返回栈顶元素

s.size() 返回栈中元素的数目

 

#include<queue>  先进先出

using namespace std;

queue <类型> s;

s.push(i)将元素i压入队列

s.pop() 删除前段的元素,就是先进去的元素

s.size()  返回队列中元素的个数

s.empty()  判断队列是否为空,为空返回1

s.front() 返回队列中的元素,返回最先进去的元素

 

优先队列的定义以及常用函数

#include<queue>

using namespace std;

priority_queue<类型 > que;//取出的值为当前最大值 即降序

priority_queue<int,vector<int>,greater<int> > que2 //升序。,取出来的是当前的最小值 ,注意最后两个尖括号中间要有空格

que.push(i) 元素入队
que.pop() 队首元素出队
que.top() 取队首元素
que.empty() 如果队列为空,则返回true(1),否则返回false(0)
que.size() 返回优先队列中拥有的元素个数

定义优先队列的其他方式:

#include<iostream>
#include<queue>
#include<vector>
using namespace std;
struct stu{
    int a;
    bool friend operator<(const stu &x,const stu &y){
        return x.a<y.a;// 从大到小
//        return x.a>y.a//从小到大 相当于priority_queue<int ,vector<int>,greator<int > >que;   
    }
};
priority_queue<stu>que;
int main(){
    int n;
    stu x;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>x.a;
        que.push(x);
    }
    while(que.size()){
        printf("%d\n",que.top().a);
        que.pop();
    }
    
}
//  10
//  1 2 3 9 8 7 6 5 4 0 

在结构体中加上一个重载。可以实现优先队列的升序排序与降序排序

 

推荐阅读