数据结构知识整理

标题2020 - 1024 == 996

你品,你细品

堆、栈、队列

  1. 大根堆小根堆
    大根堆 堆顶的元素是最大的,越往下越小
    小根堆 堆顶的元素是最小的,越往下越大
    在这里插入图片描述
    在这里插入图片描述

大根堆小根堆的声明:

priority_queue <int, vector<int>, greater<int> > xiaogen;
priority_queue <int, vector<int>, less<int> > dagen;

  1. 栈有两种基本操作,push() ,pop()操作
    push()是放进去元素,pop是取出元素,top()可以获取顶端的元素
    栈是一种先进后出的数据结构
    举个例子来说的话,更像是筒装可比克薯片(吃货实锤 ),只能获取顶端的或者是从顶端放进去
  2. 队列
    是一种先进先出的数据结构,两种基本操作是push() , pop(),push是从队列的尾端操作,每次pop是放出元素,从队列的顶端。
    他的顶端在最开始的开头部分
    队列最实际的例子就是现实生活中的队列
  3. 优先队列 priority_queue
    大根堆和小根堆其实就是一种优先队列,也有其他类型的优先队列,比如队列中套用结构体这种类型,就要用下面的方式进行声明和定义
struct node{
    int a;
    int b;
    friend bool operator < (const node& x,const node& y){
        return x.a < y.a;
    }
};
priority_queue<node> que;
因为优先队列要有一定的顺序性,所以就要有一定的排序规则在里面,这就要求用到重载运算符的方式来约束排序的规则
若按照以下的方式进行输入:
1 2
2 3
3 2
1 6
2 8

那么对应的输出就是:

3 2
2 8
2 3
1 6
1 2
==顶上的元素和想要的排序是正好相反的==
posted @ 2020-10-24 11:40  PushyTao  阅读(80)  评论(0编辑  收藏  举报