成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript實(shí)現(xiàn)基本的數(shù)據(jù)結(jié)構(gòu) 一 棧

seanlook / 2992人閱讀

摘要:今天實(shí)現(xiàn)的是最基本的數(shù)據(jù)結(jié)構(gòu)之一棧棧在中有著非常重要,基本類型會(huì)存儲(chǔ)在棧中,你可以操作實(shí)際的值。要定義一個(gè)棧,首先需要明白,棧的基本結(jié)構(gòu)有哪些,需要遵循哪些規(guī)則。首先創(chuàng)建一個(gè)函數(shù)對(duì)象表示棧。

Javascript工程師,總會(huì)面對(duì)一個(gè)問題,數(shù)據(jù)結(jié)構(gòu)和算法會(huì)成為自己的短板,不僅是對(duì)非科班,甚至一些科班出身的工程師來說也是自己的短板,于是就有了這系列文章。
基礎(chǔ)決定深度,前端入門易,上升困難,學(xué)習(xí)曲線陡,很多時(shí)候就是因?yàn)槿鄙龠@些思維。

今天實(shí)現(xiàn)的是最基本的數(shù)據(jù)結(jié)構(gòu)之一 棧

棧在js中有著非常重要,基本類型會(huì)存儲(chǔ)在棧中,你可以操作實(shí)際的值。

要定義一個(gè)棧,首先需要明白,棧的基本結(jié)構(gòu)有哪些,需要遵循哪些規(guī)則。

棧是一個(gè)線性表,遵循著LIFO原則的有序集合,也就是先進(jìn)后出,先進(jìn)入棧的元素,會(huì)儲(chǔ)存在棧底,后進(jìn)入的元素會(huì)放在棧頂,就像我們小時(shí)候見過的糧倉(cāng)一樣,先進(jìn)入的小麥被放在棧底。并且,棧只有一端是可以操作的,就是棧頂。

function Stack() {
         
        }

首先創(chuàng)建一個(gè)函數(shù)(對(duì)象)表示棧。
let items = [];
然后需要?jiǎng)?chuàng)建一個(gè)數(shù)組來保存需要保存的元素。

  this.push = function(element) {
                items.push(element)
            }//調(diào)用數(shù)組的push方法,將元素加入棧
            this.pop = function() {
                return items.pop();
            }//調(diào)用數(shù)組的pop方法移除棧頂元素并且返回該元素
            this.peek = function() {
                return items[items.length - 1]
            }//調(diào)用數(shù)組的peek方法,返回棧頂?shù)牡谝粋€(gè)元素也就是整個(gè)棧的最后一個(gè)元素。
            this.isEmpty = function() {
                return items.length == 0;
            }//檢查棧是不是為空的,返回布爾值            
            this.size = function() {
                return items.length;
            }//返回棧的長(zhǎng)度
            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())
            }
        }

這樣就簡(jiǎn)單的創(chuàng)建了棧

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

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

棧就這樣創(chuàng)建完成了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82991.html

相關(guān)文章

  • Javascript實(shí)現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)

    摘要:今天實(shí)現(xiàn)的是最基本的數(shù)據(jù)結(jié)構(gòu)之一棧棧在中有著非常重要,基本類型會(huì)存儲(chǔ)在棧中,你可以操作實(shí)際的值。要定義一個(gè)棧,首先需要明白,棧的基本結(jié)構(gòu)有哪些,需要遵循哪些規(guī)則。首先創(chuàng)建一個(gè)函數(shù)對(duì)象表示棧。 Javascript工程師,總會(huì)面對(duì)一個(gè)問題,數(shù)據(jù)結(jié)構(gòu)和算法會(huì)成為自己的短板,不僅是對(duì)非科班,甚至一些科班出身的工程師來說也是自己的短板,于是就有了這系列文章?;A(chǔ)決定深度,前端入門易,上升困難,...

    cnio 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)

    摘要:我們都知道數(shù)組是里面比較常用的一種數(shù)據(jù)結(jié)構(gòu),棧和數(shù)組類似,定義如下棧是一種遵從后進(jìn)先出原則的有序集合。新增加和待刪除的元素都保存在棧的尾部,也稱棧頂,相反的另一端就叫棧底,在棧的這種數(shù)據(jù)結(jié)構(gòu)里面,我們新增的元素都在棧頂,舊的元素都在棧底。 由于不是計(jì)算機(jī)專業(yè)出身,對(duì)數(shù)據(jù)結(jié)構(gòu)這些了解的比較少,最近看了一些相關(guān)的書籍,這里做一些總結(jié)。本篇要說的是棧。我們都知道數(shù)組是JavaScript里面...

    nanchen2251 評(píng)論0 收藏0
  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法之美 - 內(nèi)存與堆內(nèi)存 、淺拷貝與深拷貝

    摘要:棧內(nèi)存與堆內(nèi)存淺拷貝與深拷貝,可以說是前端程序員的內(nèi)功,要知其然,知其所以然。棧內(nèi)存與堆內(nèi)存中的變量分為基本類型和引用類型。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 想寫好前端,先練好內(nèi)功。 棧內(nèi)存與堆內(nèi)存 、淺拷貝與深拷貝,可以說是前端程序員的內(nèi)功,要知其然,知其所以然。 筆者寫的 JavaScrip...

    dailybird 評(píng)論0 收藏0
  • 前端進(jìn)擊巨人(二):、堆、隊(duì)列、內(nèi)存空間

    摘要:中有三種數(shù)據(jù)結(jié)構(gòu)棧堆隊(duì)列。前端進(jìn)擊的巨人一執(zhí)行上下文與執(zhí)行棧,變量對(duì)象中解釋執(zhí)行棧時(shí),舉了一個(gè)乒乓球盒子的例子,來演示棧的存取方式,這里再舉個(gè)栗子搭積木。對(duì)于基本類型,棧中存儲(chǔ)的就是它自身的值,所以新內(nèi)存空間存儲(chǔ)的也是一個(gè)值。 面試經(jīng)常遇到的深淺拷貝,事件輪詢,函數(shù)調(diào)用棧,閉包等容易出錯(cuò)的題目,究其原因,都是跟JavaScript基礎(chǔ)知識(shí)不牢固有關(guān),下層地基沒打好,上層就是豆腐渣工程,...

    edgardeng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

seanlook

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<