数据结构第一季 Day15 优先级队列(Priority Queue)

1、普通队列有什么特点?优先级队列对比普通队列有什么不同?

  • 普通队列:符合(先进先出原则,FIFO)
  • 优先级队列: 优先取出优先级较高的元素
image.png

2、优先级队列的应用场景举例(至少说出两个)?

  • 医院的夜间门诊(会根据病人挂号时间和病情严重程度,做出优先级处理)
  • 操作系统的多任务调度系统

3、思考如果基于之前的数据结构,优先级队列使用哪种数据结构实现最佳?

  • 当然是二叉堆~~~~~啊啊啊啊啊!!!!

4、基于二叉堆实现的优先级队列代码如下:

package com.lsp.queue;

import com.lsp.heap.BinaryHeap;

import java.util.Comparator;

public class PriorityQueue<E> implements Queue<E> {
    private BinaryHeap<E> binaryHeap;

    public PriorityQueue(Comparator comparator) {
        binaryHeap = new BinaryHeap<>(comparator);
    }

    public PriorityQueue(){
        this(null);
    }

    @Override
    public int size() {
        return binaryHeap.size();
    }

    @Override
    public boolean isEmpty() {
        return binaryHeap.isEmpty();
    }

    @Override
    public void clear() {
        binaryHeap.clear();
    }

    @Override
    public void enQueue(E element) {
        binaryHeap.add(element);
    }

    @Override
    public E deQueue() {
        return binaryHeap.remove();
    }

    @Override
    public E front() {
        return binaryHeap.get();
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容