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

//
// 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//
// 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本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。