> 此代码是在最大堆的基础上二次封装,请先阅读底层代码MaxHeap

优先队列

  • 普通队列:先进先出;后进后出
  • 优先队列:出队顺序和⼊入队顺序无关;和优先级相关;

为什么使用堆

代码清单

Queue.h

//
// Created by cheng on 2021/7/11.
// #ifndef MAXHEAP_QUEUE_H
#define MAXHEAP_QUEUE_H template<typename T>
class Queue {
public:
virtual int getSize() = 0; virtual bool isEmpty() = 0; virtual void enqueue(const T &e) = 0; virtual T dequeue() = 0; virtual T getFront() = 0;
}; #endif //MAXHEAP_QUEUE_H

PriorityQueue.h

//
// Created by cheng on 2021/7/11.
// #ifndef MAXHEAP_PRIORITYQUEUE_H
#define MAXHEAP_PRIORITYQUEUE_H #include "MaxHeap.h"
#include "Queue.h" template<typename T>
class PriorityQueue : public Queue<T> { private:
MaxHeap<T> *maxHeap; public:
PriorityQueue() {
maxHeap = new MaxHeap<T>();
} constexpr int getSize() {
return maxHeap->getSize();
} constexpr bool isEmpty() {
return maxHeap->isEmpty();
} void enqueue(const T &e) {
maxHeap->add(e);
} T dequeue() {
return maxHeap->extractMax();
} T getFront() {
return maxHeap->findMax();
} ~PriorityQueue() {
delete maxHeap;
maxHeap = nullptr;
} void print() {
std::cout << "Queue: size = " << maxHeap->getSize() << std::endl;
std::cout << "front ";
maxHeap->print();
std::cout << " tail" << std::endl;
}
}; #endif //MAXHEAP_PRIORITYQUEUE_H

优先队列(PriorityQueue)的更多相关文章

  1. 【Java源码】集合类-优先队列PriorityQueue

    一.类继承关系 public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serial ...

  2. [Swift]实现优先队列PriorityQueue

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. Java的优先队列PriorityQueue详解

    一.优先队列概述 优先队列PriorityQueue是Queue接口的实现,可以对其中元素进行排序, 可以放基本数据类型的包装类(如:Integer,Long等)或自定义的类 对于基本数据类型的包装器 ...

  4. Java优先队列PriorityQueue的各种打开方式以及一些你不知道的细节

    目录 Java优先队列PriorityQueue的各种打开方式以及一些你不知道的细节 优先队列的默认用法-从小到大排序 对String类用优先队列从大到小排序 通过自定义比较器对自定义的类进行从小到大 ...

  5. .NET 6 优先队列 PriorityQueue 实现分析

    在最近发布的 .NET 6 中,包含了一个新的数据结构,优先队列 PriorityQueue, 实际上这个数据结构在隔壁 Java中已经存在了很多年了, 那优先队列是怎么实现的呢? 让我们来一探究竟吧 ...

  6. 优先队列(priorityqueue)

    队列是先进先出的线性表,顾名思义,优先队列则是元素有优先级的队列,出列的顺序由元素的优先级决定.从优先队列中删除元素是根据优先权的高低次序,而不是元素进入队列的次序.优先队列的典型应用是机器调度等. ...

  7. [Swift]优先队列PriorityQueue(自定义数据结构)

    优先队列[priority queue] 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除. 优先队列特点:在优先队列中,元素被赋予优先级. 当访问元素时,具有最高优先级的元素最先 ...

  8. 优先队列PriorityQueue实现 大小根堆 解决top k 问题

    转载:https://www.cnblogs.com/lifegoesonitself/p/3391741.html PriorityQueue是从JDK1.5开始提供的新的数据结构接口,它是一种基于 ...

  9. Python 标准库 —— 队列(Queue,优先队列 PriorityQueue)

    优先队列,有别于普通队列的先入先出(虽然字面上还是队列,但其实无论从含义还是实现上,和普通队列都有很大的区别),也有别于栈的先入后出.在实现上,它一般通过堆这一数据结构,而堆其实是一种完全二叉树,它会 ...

  10. 优先队列PriorityQueue&Lambda&Comparator

    今天翻阅<Labuladuo的算法小抄>时发现在使用优先队列的PriorityQueue解决一道hard题时(leetCode 23),出现了如下代码: ListNode mergeKLi ...

随机推荐

  1. win32-ReadProcessMemory 的使用

    std::vector<std::byte> ReadBytes(PVOID address, SIZE_T length) { std::vector<std::byte> ...

  2. Redis原理再学习01:数据结构-跳跃表skiplist

    跳跃表skiplist 简介 你一定比较好奇Redis里面的 sorted set 是怎么实现的,底层到底是什么?它的排序功能就是用到了这个skiplist-跳跃表. 什么是跳跃表? 跳跃表可以看做是 ...

  3. Feign入门介绍

    Feign入门介绍 基本概述 除Feign之外,在Java中经常使用的HTTP客户端组件主要有3个,如下: (1)HttpURLConnection,JDK自带 (2)Apache HttpClien ...

  4. E4X已经被废弃,各浏览器基本上不再支持它;

    E4X是一种在ECMAScript标准的基础上加入的动态XML支持的程序语言扩展. 到2019年,目前主流浏览器已经不太支持它了,一些版本的Firefox浏览器或许还可以使用,但它已经在主流浏览器的主 ...

  5. mysql中如何批量生成百万级数据

    # 准备 #1. 准备表 create table s1( id int, name varchar(20), gender char(6), email varchar(50), first_nam ...

  6. 【Azure 环境】各种语言版本或命令,发送HTTP/HTTPS的请求合集

    问题描述 写代码的过程中,时常遇见要通过代码请求其他HTTP,HTTPS的情况,以下是收集各种语言的请求发送,需要使用的代码或命令 一:PowerShell Invoke-WebRequest htt ...

  7. 在vmware里安装ubuntu的简单过程(具体的见网址)

    在官网选择vmware版本为16,安装后,在vmware里升级到最新版.(这个可以解决蓝屏) 在下面的这个文章里下载ubuntu的镜像文件iso,我下载的是16年的,内存为1.6GB,下载的时间用的少 ...

  8. sign 单词学习 - 本质:去分开

    sign 英[saɪn],美[saɪn] n. 符号; 指示牌; 手势; 征兆; 正负号; 星座 v. 签名; 签约; 打手语 词源说明(童理民) sign : 来自拉丁语signum,符号,标志,图 ...

  9. great [ɡreɪt] ɡr 然后 eɪt 单词发音 r和前面的辅音连读

    great [ɡreɪt] ɡr 然后 eɪt 单词发音 r和前面的辅音连读

  10. 软件推荐 Notable / 现改用 Vnote 了

    https://notable.app/#download