日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript数据结构与算法——队列详解(上)

發布時間:2023/12/31 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript数据结构与算法——队列详解(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隊列基本知識

隊列是一種與列表很像的數據結構,只是隊列只能在尾部插入元素,在隊首刪除元素。隊列用于存放按順序排列的元素,先進先出,就像食堂排隊一樣,后來的只能排在后面,先來的先拿飯,一種井然有序的感覺。
對隊列的主要操作是入隊和出隊,即往隊尾插入元素以及刪除隊首元素,此外隊列還需要有用于訪問隊首元素的方法、返回隊列長度的方法等等,下面我們將一一實現。

JS中隊列的實現

借助JavaScript中的數組,我們可以輕松實現隊列數據結構,數組的push() 方法可以往數組尾插入元素,shift() 方法則可以將數組頭元素刪除,接下來我們來實現隊列數據結構:

實現隊列構造函數

// Created by xiaoqiang on 07/04/2018. function Queue() {this.data = [] // 存放數據this.enQueue = enQueue // 入隊操作this.deQueue = deQueue // 出隊操作this.first = first // 訪問第一個元素this.last = last // 訪問最后一個元素this.toString = toString // 顯示隊列中的數據this.empty = empty // 判斷隊列是否為空 }

實現入隊方法

function enQueue(param) {this.data.push(param)return this }

使用return this是想在入隊時可以鏈式調用,簡寫代碼達到偷懶的目的。

實現出隊方法

function deQueue() {return this.data.shift() }

實現訪問隊首方法

function first() {return this.data[0] }

實現訪問隊尾方法

function last() {return this.data[this.data.length - 1] }

實現顯示隊列元素方法

function toString() {var str = ''for (var i = 0; i < this.data.length; i++) {str += this.data[i] + '\n'}return str }

之所以加上'\n',是想元素以這種格式顯示:

first second three

實現隊列是否為空的方法

function empty() {if (this.data.length === 0) {return true} else {return false} }

隊列實現完整代碼

// Created by xiaoqiang on 07/04/2018. function Queue() {this.data = [] // 存放數據this.enQueue = enQueue // 入隊操作this.deQueue = deQueue // 出隊操作this.first = first // 訪問第一個元素this.last = last // 訪問最后一個元素this.toString = toString // 顯示隊列中的數據this.empty = empty // 清空隊列數據 }function enQueue(param) {this.data.push(param)return this }function deQueue() {return this.data.shift() }function first() {return this.data[0] }function last() {return this.data[this.data.length - 1] }function toString() {var str = ''for (var i = 0; i < this.data.length; i++) {str += this.data[i] + '\n'}return str }function empty() {if (this.data.length === 0) {return true} else {return false} }

測試及結果解釋

測試用例

// 新建隊列對象 var queue = new Queue()// 入隊操作 queue.enQueue('JavaScript').enQueue('Java').enQueue('NodeJS')// 顯示隊列元素 console.log(queue.toString())// 出隊操作 queue.deQueue()// 顯示隊列元素 console.log(queue.toString())// 訪問隊首元素 console.log(queue.first())// 訪問隊尾元素 console.log(queue.last())

測試結果

將隊列結構實現代碼以及測試用例代碼都放在queue.js文件中,使用
node queue.js 執行代碼,運行結果如下:

結果解釋

首先進行入隊操作,由于本人在入隊和出隊中使用return this返回當前對象,因此可以鏈式調用,純屬偷懶做法。入隊了三個元素,隨后顯示一下,如圖,顯示正確。
然后進行出隊操作,即刪除了第一個元素,如圖,出隊操作后顯示正確。
最后訪問了一下隊首和隊尾元素,此時只剩兩個元素了,一個是隊首一個是隊尾,顯示正確。
總結:JavaScript實現隊列數據結構完成,邏輯正確。
有錯誤歡迎指出,下篇中將舉一些應用此數據結構的實例,有興趣歡迎閱讀本人后續文章,謝謝。

總結

以上是生活随笔為你收集整理的JavaScript数据结构与算法——队列详解(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。