Javascript實現基本的數據結構 一 棧

Javascript工程師,總會面對一個問題,數據結構和算法會成爲本身的短板,不只是對非科班,甚至一些科班出身的工程師來講也是本身的短板,因而就有了這系列文章。
基礎決定深度,前端入門易,上升困難,學習曲線陡,不少時候就是由於缺乏這些思惟。前端

今天實現的是最基本的數據結構之一 棧算法

棧在js中有着很是重要,基本類型會存儲在棧中,你能夠操做實際的值。數組

要定義一個棧,首先須要明白,棧的基本結構有哪些,須要遵循哪些規則。數據結構

棧是一個線性表,遵循着LIFO原則的有序集合,也就是先進後出,先進入棧的元素,會儲存在棧底,後進入的元素會放在棧頂,就像咱們小時候見過的糧倉同樣,先進入的小麥被放在棧底。而且,棧只有一端是能夠操做的,就是棧頂。數據結構和算法

function Stack() {
         
        }

首先建立一個函數(對象)表示棧。
let items = [];
而後須要建立一個數組來保存須要保存的元素。函數

this.push = function(element) {
                items.push(element)
            }//調用數組的push方法,將元素加入棧
            this.pop = function() {
                return items.pop();
            }//調用數組的pop方法移除棧頂元素而且返回該元素
            this.peek = function() {
                return items[items.length - 1]
            }//調用數組的peek方法,返回棧頂的第一個元素也就是整個棧的最後一個元素。
            this.isEmpty = function() {
                return items.length == 0;
            }//檢查棧是否是爲空的,返回布爾值            
            this.size = function() {
                return items.length;
            }//返回棧的長度
            this.clear = function() {
                items = [];
            }//刪除棧中全部的元素
            this.print = function() {
                console.log(items.toString)
            }//打出棧全部的元素

接下來須要給棧定義方法學習

function Stack() {
            let items = [];
            this.push = function(element) {
                items.push(element)
                console.log(this)
            }
            this.pop = function() {
                return items.pop();
            }
            this.peek = function() {
                return items[items.length - 1]
            }
            this.isEmpty = function() {
                return items.length == 0;
            }
            this.size = function() {
                return items.length;
            }
            this.clear = function() {
                items = [];
            }
            this.print = function() {
                console.log(items.toString())
            }
        }

這樣就簡單的建立了棧this

接下來須要試一下棧的基本功能spa

let stack = new Stack();定義一個新的對象
  console.log(stack.__proto__)//__proto__等於prototype.constructor

v2-4c86d11a5f4d310efd74c333d3289542_b.png

棧就這樣建立完成了。prototype

相關文章
相關標籤/搜索