TypeScript数据结构与算法(3)最基础的数据结构-队列-Queue

队列的性质就是:先入先出,想象一下在食堂排队打饭,先来的人,先打,后来的人,排在队伍后面,这里面就多少反映出了队列的性质,先进先出,是否需要使用到队列,还是需要根据自己的需求来判断,一个队列应该提供一下接口:

1.dequeue():出队操作

2.enqueue():入队操作,放在对尾巴那里

3.getFront():查看队首元素

4.getSize():查看队列实际存储了多少个元素

5.isEmpty():是否为空队列

6.getCapacity():查看队列的容量是多少

和栈一样,在实现队列之前,我先实现了一个接口Interface_Queue<T>,以下是接口的源码:

export interface Interface_Queue<T> {
    getSize(): number;
    isEmpty(): boolean;
    enqueue(e: T): void;
    dequeue(): T;
    getFront(): T;
}

队列源码:

/**
* Autor: Created by 李清风 on 2020-12-17.
* Desc: 数组队列(列表),关键词:排队,想想银行柜台排队办事,先进先出,队首(前取)队尾(后入),出队,入队,从队首出元素,从队尾进新的元素
*/
export class DataStruct_Queue<T> implements Interface_Queue<T>{

    private array: DataStruct_Array<T>;


    public constructor(capacity: number) {
        this.array = new DataStruct_Array<T>(capacity); //再次强调,我们这里可以有无参的构造器
    }

    //某某,出队,时间复杂度On
    public dequeue(): T {
        return this.array.removeFirst(); //队列的队首对应数组的首
    }

    //某某,入队
    public enqueue(e: T) {
        this.array.addLast(e);
    }

    //查看队首元素
    public getFront(): T {
        return this.array.getFirst();
    }

    //查看队列实际存储了多少个元素
    public getSize() {
        return this.array.getSize();
    }

    //判断队列是否为空
    public isEmpty(): boolean {
        return this.array.isEmpty();
    }

    //查看队列的容量是多少
    public getCapacity(): number {
        return this.array.getCapacity();
    }
}

 

posted @ 2021-01-21 15:29  CYNLINQ  阅读(292)  评论(0)    收藏  举报