数据结构-js实现栈和队列
生活随笔
收集整理的這篇文章主要介紹了
数据结构-js实现栈和队列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們都知道數據結構對我們非常重要,我在幾場筆試題中遇到了非常多的有關數據結構的問題。因為我學習數據結構在一年多以前了,有點忘了,所以今天想好好溫習一下數據結構的知識,先從簡單的數據結構說起吧。
我們都知道棧是一個墳場重要的數據的一種結構,它在我們的計算機很多方面都用到了,也包括我們的調用棧之類的,都有有關棧的知識。我們先說一下棧。網上有好多有數組的方法實現的,那樣太簡單了,但是我不想那樣,因為我想自己實現一個,不想用數組的API。
- 棧的特點
- 后進先出(LIFO)(先進后出)
- 只允許操作棧頂,不能操作棧底
- 棧示例 偷偷地到了一張圖,如有侵權馬上撤回。 我就不多介紹棧了,相信大家都很清楚。 我們就來說一下棧的操作吧。
我羅列的可能不清楚或者是不專業,請大家多多指正。(這只是我個人理解的棧的實現)
class Stack {constructor(){this.stacks = [];this.length = 0;}Top(){return this.stacks[this.length - 1];}Pop(){return this.stacks.splice(-- this.length, 1)[0];}Push(val){this.stacks[this.length ++] = val;}Length(){return this.length;}isEmpty(){return this.length === 0;}Clear(){this.stacks = [];this.length = 0;}List(){for (var i = this.length - 1; i >= 0; i --) {console.log(this.stacks[i]);}} } 復制代碼我們來驗證一下
console.log('-------------棧-----------------'); let stack = new Stack(); console.log("為空" + stack.isEmpty()); console.log("長度" + stack.Length()); stack.Push(0); stack.Push(1); stack.Push(2); console.log("長度" + stack.Length()); stack.List(); console.log("棧頂元素" + stack.Top()); console.log("出棧" + stack.Pop()); console.log("出棧" + stack.Pop()); console.log("棧頂元素" + stack.Top()); stack.Clear(); console.log("清棧"); console.log("長度" + stack.Length()); stack.List(); 復制代碼 我覺得棧是一種思想,對數據的管理或者是操作的方式,我覺得每一個人都有每一個人實現的方式和對棧的理解,所以我覺得不必非得按照什么樣的格式,只要實現了這樣一個操作就行。- 棧的應用
- 進制轉換
- 括號或者是成對的匹配問題
- 等等
前面聊完了棧,那么就一定有一個跟它思想類似的隊列要說一下。下面我們來聊一聊隊列。
- 隊列在我們的計算機中也是大量的應用,比如我們的消息隊列之類的。
- 特點
- 先進先出(FIFO)
- 隊尾插入,隊頭刪除
- 實例
- 基本操作
- 代碼
- 操作示例
- 輸出
- 遺憾
隊列還有好幾種,比如說循環隊列,就是隊頭、隊尾兩個指針,用能力的人可以實現以下。
- 總結
轉載于:https://juejin.im/post/5ce557f8e51d45777621badf
總結
以上是生活随笔為你收集整理的数据结构-js实现栈和队列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Failed to install VS
- 下一篇: AJPFX关于collection总结