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(); } }

浙公网安备 33010602011771号