线性队列
二叉树的层序遍历
定义接口
//02.js
interface Queue<T>{
enqueue(element:T):void
dequeue():T | undefined
peek():T | undefined
isEmpty():boolean
size():number
}
实现接口
// 01.js
import './02'
class ArrayQueue<T> implements Queue<T>{
private data:T[] = []
enqueue(element:T):void{
this.data.push(element)
}
dequeue():T | undefined{
return this.data.shift()
}
peek():T|undefined{
return this.data[0]
}
isEmpty():boolean{
return this.data.length === 0
}
size():number{
return this.data.length
}
}
export default ArrayQueue
将队列和栈相同的方法再次进行抽取为 List 接口
// 04.ts
interface List<T>{
peek():T|undefined
isEmpty():boolean
size():number
}
队列接口继承 List 接口
// 05.ts
interface ArrayQueue2<T> extends List<T>{
enqueue(element:T):void
dequeue():T | undefined
}