栈和 队列 和 优先队列的 简单操作(初学者)

1. 栈

关于栈简单的理解就是一个 “先进后出”的容器。下面为基本的操作:
#include <stack>   头文件
stack<int> s       创建一个 存储 int 型 的栈 ,类似的 int 还可以 改为:double  float   char 或者 结构体
s.push(x)         让 x  这个元素进栈
s.pop()           栈中的 第一个 元素出栈
s.top()           调用栈的第一个元素
s.enpty()         判断栈是否为空,如果为空 返回 1,如果不为空  返回 0

2.队列

上面提到 栈的 理解,这里 队列的理解就是 一个 “先进先出” 的容器,下面是基本操作:
#include <queue>    头文件
queue<int> q        创建一个空队列 <int> 这里 与上面 栈的功能相同
q.push(x)           进队列
q.front()           调用队列的第一个元素
q.pop()             队列中的第一个元素 出队列
q.empty()           判断 队列是否为空,若为空 返回 1, 若不为空  返回 0

3.优先队列

上面已经简单的介绍了队列,那么优先队列呢与上面的队列 和 栈 是不同的,所谓优先就是 里面存储的元素 都对应一个 优先值,哪个元素的优先值大 那么就优先 出去。这里 优先队列 我们存储  结构体 元素 , 比较 容易 体现出 优先  二字的所在.下面是 一些基础操作:
//  下面是一个  排队看病的问题  很典型的 优先队列问题
#include <iostream>
#include <stack>
#include <queue>   // 头文件
using namespace std;

struct node         // 定义一个结构体 
{
    int power;    // 病情的 严重性
    int order;    //  排队的顺序
};

bool operator < (const node s1, const node s2)
{
    if(s1.power == s2.power)
        return s1.order > s2.order;//  顺序 靠前的 优先
    else
        return s1.power < s2.power; // 病情严重的  优先

}

int main()
{
    priority_queue<node> q;     // 创建一个新的优先队列  里面存储 的是  结构体
    node temp;   
    temp.power = 1;
    temp.order = 2;
    q.push(temp);               // 优先队列  里 插入 元素
    cout<<q.top().order<<endl;   // q.top()   是 调用 优先队列里面的优先值 最大的元素
    //  q.empty()   是用来判断 队列 是否  为空  ,若为空 返回 1, 若不为空 返回0
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值