国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript實現(xiàn)數(shù)據(jù)結構中的棧結構

xuxueli / 756人閱讀

摘要:在中,一些利用原本數(shù)組沒法輕易解決的問題,其實也是可以通過模擬數(shù)據(jù)結構來解決問題的,并非是說前端就不需要去學數(shù)據(jù)結構與算法,懂得數(shù)據(jù)結構的前端才是真的程序員。

在javascript中,一些利用原本數(shù)組沒法輕易解決的問題,其實也是可以通過模擬數(shù)據(jù)結構來解決問題的,并非是說前端就不需要去學數(shù)據(jù)結構與算法,懂得數(shù)據(jù)結構的前端才是真的程序員。

下面簡單地用javascript來實現(xiàn)數(shù)據(jù)結構中的棧結構,棧結構的先入后出性質(zhì)在解決某些數(shù)據(jù)問題時很有用

棧的構造函數(shù)

function Stack() {
    this.dataStore = [];
    this.top = 0;
    this.push = push;
    this.pop = pop;
    this.peek = peek;
    this.clear = clear;
    this.length = length;
}

從棧頂放入某個元素

function push(element) {
    this.dataStore[this.top++] = element;
}

從棧頂取出某個元素

function pop() {
    return this.dataStore[--this.top]
}

獲得棧的高度

function length() {
    return this.top;
}

清空整個棧

function clear() {
    this.top = 0;
}

改變棧頂?shù)奈恢?/p>

function peek() {
   return this.dataStore[this.top - 1];
}

下面是一個有趣的例子 利用stack類實現(xiàn)10進制轉(zhuǎn)換為其它進制
function mulBase(num, base) {
    let s = new Stack();
    do {
        s.push(num % base);
        num = Math.floor(num /= base);
    } while (num > 0);
    let content = "";
    while (s.length() > 0) {
        content += s.pop();
    }
    return content;
}
將10進制數(shù)9轉(zhuǎn)換為2進制數(shù)1001 print(mulBase(9, 2));
又是一個有趣的例子,用棧來判斷是否是回文,回文就是一個字符串,從前往后寫跟從后往前寫都是一樣的 例如"racecar","data"
function isPalindrome(word) {
        let s = new Stack();
        for (let i = 0; i < word.length; i++) {
            s.push(word[i]);
        }
        let rword = "";
        while (s.length() > 0) {
            rword += s.pop();
        }
        if (word == rword) {
            return true;
        } else {
            return false;
        }
    }
判斷racecar是否是回文 print(isPalindrome("racecar"));用棧可以實現(xiàn)很多方便的功能,可以見得前端了解數(shù)據(jù)結構尤為重要。

歡迎評論以及留言,同時歡迎關注我的博客定時不斷地更新我的文章 陳建光的博客

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/94337.html

相關文章

  • js模擬簡單的棧和隊列

    摘要:移除數(shù)組第一項并返回該項同時將數(shù)組的長度減一。簡單實現(xiàn)棧使用和結合實現(xiàn)簡單棧簡單實現(xiàn)隊列使用與結合實現(xiàn)簡單隊列額外補充與用途相反,在數(shù)組前端添加任意個項,并返回新數(shù)組的長度。 棧和隊列 棧:LIFO(先進后出)一種數(shù)據(jù)結構隊列:LILO(先進先出)一種數(shù)據(jù)結構 使用的js方法 1.push();可以接收任意數(shù)量的參數(shù),把它們逐個推進隊尾(數(shù)組末尾),并返回修改后的數(shù)組長度。2.po...

    張金寶 評論0 收藏0
  • 數(shù)據(jù)結構javascript實現(xiàn)

    摘要:一數(shù)組二棧棧又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。 一、數(shù)組 二、棧 棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧...

    Astrian 評論0 收藏0
  • 前端進擊的巨人(二):棧、堆、隊列、內(nèi)存空間

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

    edgardeng 評論0 收藏0
  • JVM體系結構與工作方式概覽

    摘要:在本文,筆者將與大家概覽的體系結構與工作方式。將第條和第條指令分別是將兩個局部變量入棧,然后相加。最后一條指令是,這條指令執(zhí)行完后當前的這個方法對應的這些部件會被回收,局部變量區(qū)的所有值將全部釋放,寄存器會被銷魂,在棧中與這個方 Java之所以號稱一次編譯,到處運行,主要原因是JVM屏蔽了各個計算機平臺相關的軟件(大多指系統(tǒng))或者硬件之間的差異,使得與平臺相關的耦合統(tǒng)一由JVM提供者來...

    suosuopuo 評論0 收藏0
  • java的棧

    摘要:對于執(zhí)行引擎來說,在活動線程中,只有位于棧頂?shù)臈攀亲钣行У姆Q為當前棧幀與這個棧幀相關聯(lián)的方法稱為當前方法。執(zhí)行引擎運行的所有的字節(jié)碼指令都只針對當前棧幀進行操作。 showImg(https://segmentfault.com/img/bVbvueY?w=1600&h=800); 棧幀數(shù)據(jù)結構 棧幀(Stack Frame)是用來支持虛擬機進行方法調(diào)用和方法執(zhí)行的數(shù)據(jù)結構,它是虛...

    jeyhan 評論0 收藏0

發(fā)表評論

0條評論

xuxueli

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<