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

来源:互联网 发布:ubuntu apt 安装jdk 编辑:程序博客网 时间:2024/06/05 03:03

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;}
原创粉丝点击