• 队列和栈部分


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

    #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
    ",que.top().a);
            que.pop();
        }
        
    }
    //  10
    //  1 2 3 9 8 7 6 5 4 0 

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

  • 相关阅读:
    全国(省,直辖市,自治区,特别行政区)映射集合
    数据库辅助类
    时间格式化工具类
    密码加密(MD5)
    算法竞赛入门经典——第3章答案
    第三章学习小结—-转
    isalpha函数和isdigit函数
    重新实现库函数
    树状数组总结——转
    线段树——转
  • 原文地址:https://www.cnblogs.com/Accepting/p/11210728.html
Copyright © 2020-2023  润新知