Skip to content

Latest commit

 

History

History
80 lines (58 loc) · 1.11 KB

队列.md

File metadata and controls

80 lines (58 loc) · 1.11 KB

队列的使用场景

线性队列

二叉树的层序遍历

队列的实现

基于数组实现

定义接口

//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
}

基于链表实现