欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊列詳解

 更新時間:2023年01月30日 10:01:30   作者:前端技術(shù)獺  
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊列詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

棧結(jié)構(gòu)特點

線性表的其中一種,用于存儲固定順序的元素元素增刪具有先進后出的特點。

出棧和入棧

在JavaScript中可以利用數(shù)組的pop()push()方法可以實現(xiàn)出棧入棧。操作如下:

let a = [1, 2, 3, 4, 5]
a.pop() // 出棧操作
console.log(a) // [1,2,3,4]
a.push(6) // 入棧操作
console.log(a)// [1,2,3,4,6]

面向?qū)ο蠓椒ǚ庋b棧

基于pop()push()數(shù)組方法。方法設(shè)計如下:

pop(): any:若棧不為空,將棧頂元素推出棧。

push(element: any): Stack:將元素推入棧里。

isEmpty(): boolean:判斷棧是否為空。

class Stack {
    length: number
    stack: any[]
    constructor() {
        this.length = 0
        this.stack = []
    }
    pop(): any {
        if (this.isEmpty()) {
            throw new Error('Stack is empty.')
        } else {
            return this.length-- && this.stack.pop()
        }
    }
    push(element: any): Stack {
        this.stack.push(element) && this.length++
        return this
    }
    isEmpty(): boolean {
        return this.length === 0
    }
}

隊列結(jié)構(gòu)特點

隊列線性表的其中一種,用于存儲固定順序的元素,元素增刪具有先進先出的特點。

出隊和入隊

在JavaScript中利用數(shù)組的shift()push()方法可以實現(xiàn)出隊入隊。操作如下:

let a = [1, 2, 3, 4, 5]
a.shift() // 出隊操作
console.log(a) // [2, 3, 4, 5]
a.push(6) // 入隊操作
console.log(a)// [2,3,4,5, 6]

面向?qū)ο蠓椒ǚ庋b隊列

基于shift()push()數(shù)組方法。方法設(shè)計如下:

dequeue(): any:若隊列不為空,將隊列首元素推出隊列。

enqueue(element: any): Queue:將元素推入隊列里。

isEmpty(): boolean:判斷隊列是否為空。

class Queue {
    length: number
    queue: any[]
    constructor() {
        this.length = 0
        this.queue = []
    }
    dequeue(): any {
        if (this.isEmpty()) {
            throw new Error('Queue is empty.')
        } else {
            return this.length-- && this.queue.shift()
        }
    }
    enqueue(element: any): Queue {
        this.queue.push(element) && this.length++
        return this
    }
    isEmpty(): boolean {
        return this.length === 0
    }
}

本文相關(guān)代碼已放置我的Github倉庫 ??

項目地址:

Algorithmlib|Stack

Algorithmlib|Queue

以上就是數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊列詳解的詳細內(nèi)容,更多關(guān)于TypeScript數(shù)據(jù)結(jié)構(gòu)棧和隊列的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用three.js 畫漸變的直線

    使用three.js 畫漸變的直線

    這篇文章主要介紹了使用three.js 畫漸變的直線的相關(guān)資料以及具體的實例代碼,有需要的小伙伴可以參考下
    2016-06-06
  • Typescript使用裝飾器實現(xiàn)接口字段映射與Mock實例

    Typescript使用裝飾器實現(xiàn)接口字段映射與Mock實例

    這篇文章主要為大家介紹了Typescript使用裝飾器實現(xiàn)接口字段映射與Mock實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • typescript類型體操及關(guān)鍵字使用示例詳解

    typescript類型體操及關(guān)鍵字使用示例詳解

    這篇文章主要為大家介紹了typescript類型體操及關(guān)鍵字使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 前端輕量級MVC框架CanJS詳解

    前端輕量級MVC框架CanJS詳解

    你可能聽說了這個新MVC框架: CanJS。還有什么比用它來創(chuàng)建一個聯(lián)系人Web App更能深入了解它的辦法呢?當看完這篇教程,你將全面了解用它的什么工具來創(chuàng)建你自己的Web App。
    2014-09-09
  • TypeScript快速上手—html中使用ts的兩種方法

    TypeScript快速上手—html中使用ts的兩種方法

    TypeScript使用命令行編譯器tsc或其他工具手動執(zhí)行編譯,在html使用s時編譯為JavaScript,那么有沒有辦法簡化過程,不編譯直接使用,本文介紹html中使用TypeScript的兩種方法
    2024-07-07
  • TypeScript數(shù)組實現(xiàn)棧與對象實現(xiàn)棧的區(qū)別詳解

    TypeScript數(shù)組實現(xiàn)棧與對象實現(xiàn)棧的區(qū)別詳解

    這篇文章主要為大家介紹了TypeScript數(shù)組實現(xiàn)棧與對象實現(xiàn)棧的區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊列詳解

    數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊列詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊列詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • require.js使用方法的簡單代碼講解筆記

    require.js使用方法的簡單代碼講解筆記

    頁面需要加載多個js文件時,加載時瀏覽器會停止網(wǎng)頁渲染,加載文件越多,網(wǎng)頁失去響應(yīng)的時間就會越長;由于js文件之間存在依賴關(guān)系,必須嚴格保證加載順序,當依賴關(guān)系很復(fù)雜的時候,代碼的編寫和維護都會變得困難。這種情況下require.js插件應(yīng)運而生。
    2022-12-12
  • TypeScript中的遞歸類型示例解析

    TypeScript中的遞歸類型示例解析

    這篇文章主要為大家介紹了TypeScript中的遞歸類型示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • rollup?cli開發(fā)全面系統(tǒng)性rollup源碼分析

    rollup?cli開發(fā)全面系統(tǒng)性rollup源碼分析

    這篇文章主要為大家介紹了rollup?cli開發(fā)全網(wǎng)系統(tǒng)性rollup源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論