基础数据结构:队列queue

        队列(queue)在c++中是一种线性的基础数据结构,它的操作受算法的限制.队列就好比生活当中的排队,不考虑插队的情况下你总是先进入队列的先离开,后进入队列的就后离开.所以队列每次只能取队首的值,每次只能从队尾加入数据.

        关于队列的基本操作:

1.入队(push);
2.出队(pop);
3.判断队列是否为空(empty);
4.统计队列元素的个数(size);
5.访问队首元素(front);

        使用队列,首先要引入库.队列的头文件就是队列的英文:queue.所以在代码最前面写上:

#include <queue>
using namespace std;

int main(){
    
    return 0;
}

        构造队列的语句为:queue<T> ...;于是我们再加入定义队列的语句:

#include <queue>
using namespace std;

int main(){
    queue<int> q;

    return 0;
}

        于是我们就定义好了一个整数类型的名字为q的队列.接下来我们再用push函数往内 添加元素:

#include <queue>
using namespace std;

int main(){
    queue<int> q;
    q.push(5);
    q.push(2);
    q.push(0);
    return 0;
}

        这样子就塞了个520进去~.接下来我们访问队首元素:

#include <queue>
#include <iostream>
using namespace std;

int main(){
    queue<int> q;
    q.push(5);
    cout << q.front() << endl;
    q.push(2);
    cout << q.front() << endl;
    q.push(0);
    cout << q.front() << endl;
    return 0;
}

        由于队列是向队尾加元素,所以会得到555而不是520.下面再看看判断队列是否为空的操作:

#include <queue>
#include <iostream>
using namespace std;

int main(){
    queue<int> q;
    cout << (q.empty() ? "yes" : "no") << endl;
    q.push(4);
    cout << (q.empty() ? "yes" : "no") << endl;
    return 0;
}

        那么如何使队首元素出列呢?

#include <queue>
#include <iostream>
using namespace std;

int main(){
    queue<int> q;
    q.push(5);
    q.push(2);
    q.push(0);
    
    while(!q.empty()){
        cout << q.front() << endl;
        q.pop();
    }
    return 0;
}

        电脑终于说出了520~.至于统计元素个数:

#include <queue>
#include <iostream>
using namespace std;

int main(){
    queue<int> q;
    q.push(5);
    q.push(2);
    q.push(0);
    cout << q.size() << endl;
    return 0;
}

        对于队列的操作就到此结束了.


        其实queue的头文件中根据一些特殊问题还定义了一种数据结构:优先队列.即默认让大的先出队,小的排前面.定义优先队列时需要三个参数:元素类型,容器类型和比较算子.

定义一个较大数先出队的队列:

priority_queue<int, vector<int>, less<int> > q;

定义一个较小数先出队的队列:

priority_queue<int, vector<int>, greater<int> > q;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值