最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

數據結構TypeScript之棧和隊列詳解

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

棧結構特點

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

出棧和入棧

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

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]

面向對象方法封裝棧

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

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

隊列結構特點

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

出隊和入隊

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

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]

面向對象方法封裝隊列

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

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

本文相關代碼已放置我的Github倉庫 ??

項目地址:

Algorithmlib|Stack

Algorithmlib|Queue

以上就是數據結構TypeScript之棧和隊列詳解的詳細內容,更多關于TypeScript數據結構棧和隊列的資料請關注腳本之家其它相關文章!

相關文章

  • js庫Modernizr的介紹和使用

    js庫Modernizr的介紹和使用

    Modernizr是一個開源的JS庫,它使得那些基于訪客瀏覽器的不同(指對新標準支持性的差異)而開發(fā)不同級別體驗的設計師的工作變得更為簡單
    2015-05-05
  • JavaScript可視化圖表庫D3.js API中文參考

    JavaScript可視化圖表庫D3.js API中文參考

    這篇文章主要介紹了JavaScript可視化圖表庫D3.js API中文參考,本文對常用的API給出一中文翻譯,需要的朋友可以參考下
    2015-01-01
  • TypeScript中的遞歸類型示例解析

    TypeScript中的遞歸類型示例解析

    這篇文章主要為大家介紹了TypeScript中的遞歸類型示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • FastAdmin表單驗證data-rule插件—Nice-validator的使用方法

    FastAdmin表單驗證data-rule插件—Nice-validator的使用方法

    FastAdmin的表單驗證data-rule非常方便,也很炫酷,采用的Nice-validator是一款非常強大的表單驗證插件,通過簡單在元素上配置規(guī)則,即可達到驗證的效果,怎么使用Nice-validator插件呢
    2023-09-09
  • layui中的layer彈出層自定義樣式更改背景

    layui中的layer彈出層自定義樣式更改背景

    layui中的layer彈出層有很多提示框,但是我們使用最多的應該就幾種,layer.msg、layer.alert、layer.open、layer.load等。layer?有內置的skin:layui-layer-lan,layui-layer-molv,可以直接使用。skin不僅允許你傳入layer內置的樣式class名,可以自定義class名。
    2023-06-06
  • require.js使用方法的簡單代碼講解筆記

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

    頁面需要加載多個js文件時,加載時瀏覽器會停止網頁渲染,加載文件越多,網頁失去響應的時間就會越長;由于js文件之間存在依賴關系,必須嚴格保證加載順序,當依賴關系很復雜的時候,代碼的編寫和維護都會變得困難。這種情況下require.js插件應運而生。
    2022-12-12
  • TypeScript學習輕松玩轉類型操作

    TypeScript學習輕松玩轉類型操作

    這篇文章主要為大家介紹了TypeScript學習輕松玩轉類型操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Underscore.js常用方法總結

    Underscore.js常用方法總結

    這篇文章主要介紹了Underscore.js常用方法總結,本文講解了Underscore.js概述、在node.js下安裝、與集合有關的方法、與對象有關的方法、與函數相關的方法等內容,需要的朋友可以參考下
    2015-02-02
  • 淺談Sizzle的“編譯原理”

    淺談Sizzle的“編譯原理”

    正在學習Sizzle源碼或有一定前端基礎的同學們,可以一邊看源碼一邊看這些文章進行驗證,所以雖然我會分析源碼中的正則表達式,有大量的注釋,但不會講正則表達式的基本用法!
    2015-04-04
  • TypeScript前端上傳文件到MinIO示例詳解

    TypeScript前端上傳文件到MinIO示例詳解

    這篇文章主要為大家介紹了TypeScript前端上傳文件到MinIO示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10

最新評論

卓资县| 绵阳市| 咸宁市| 正镶白旗| 湘乡市| 宁南县| 界首市| 禄劝| 江都市| 芒康县| 阿荣旗| 卢湾区| 鹿邑县| 都兰县| 阳山县| 宣汉县| 建宁县| 孟州市| 万安县| 新邵县| 竹溪县| 武陟县| 原阳县| 铅山县| 汤原县| 肇东市| 图木舒克市| 茌平县| 荣昌县| 郁南县| 连南| 石家庄市| 喀喇沁旗| 大埔区| 沐川县| 胶州市| 阜康市| 桂平市| 彰化县| 鄯善县| 汶川县|