TypeScript数据结构与算法(16)优先级队列-PriorityQueue

实现的源码如下:

import { Interface_Queue } from "../Interface_Queue";
import { DataStruct_BinaryMaxHeap } from "./DataStruct_BinaryMaxHeap";

/**
* Autor: Created by 李清风 on 2021-01-03.
* Desc: 优先级队列(基于二叉堆实现),关键词:优先级(Priority),运用场景:操作系统任务调用,游戏AI
*/
export class DataStruct_PriorityQueue<T> implements Interface_Queue<T> {

    //*和普通队列相比,优先级队列的区别在于我们需要出队优先级最高的那个元素

    //普通线性结构和顺序线性结构,都可以实现,区别在于算法的时间复杂度


    private maxHeap: DataStruct_BinaryMaxHeap<T>;

    public constructor() {
        this.maxHeap = new DataStruct_BinaryMaxHeap<T>(10);
    }


    getSize(): number {
        return this.maxHeap.size();
    }


    isEmpty(): boolean {
        return this.maxHeap.isEmpty();
    }


    //入队
    enqueue(e: T): void {
        this.maxHeap.add(e);
    }


    //出队
    dequeue(): T {
        return this.maxHeap.extractMax();
    }


    getFront(): T {
        return this.maxHeap.findMax();//也就是堆顶的数据
    }
}

 

posted @ 2021-01-21 18:33  CYNLINQ  阅读(457)  评论(0)    收藏  举报