JavaScript資料結構與演算法 棧及其應用

2021-08-19 14:18:06 字數 1459 閱讀 4547

1.使用es6模擬棧的實現

let stack = (function

() push(element)

pop()

isempty()

size()

peer()

clear()

print()

tostring()

} return stack;

})();

2.棧應用之進製轉換

問題描述:將十進位制轉換為其他進製資料。

function

baseconverter

(decnumber, base)

while (!remstack.isempty())

return basestring;

}

3.棧應用之括號匹配

問題描述:括號格式應該正確,不形成語法錯誤。

function

isbracketbalanced

(str) // 若包含除括號以外的其他字元,則報錯

for (i = 0; i < str.length; i++) else

}} return stack.isempty();

}// test

var res = isbracketbalanced('(((()())(())))(');

console.log(res);

4.棧的應用之漢諾塔問題

問題描述:塔上有三根柱子和一套直徑各不相同的空心圓盤,開始時源柱子上的所有圓盤都按從大到小的順序排列。目標是通過每一次移動乙個圓盤到另一根柱子上,最終把一堆圓盤移動到目標柱子上,過程中不允許把較大的圓盤放置在較小的圓盤上。

三個盤子時的移動過程:

n個盤子時,只能使用遞迴。思路如下圖:

**實現:

var towerofhanoi = function(n, from, help, to) 

}var a =

newstack(),

b =newstack(),

c =newstack(),

n =10;for(let i = n; i >

0; i--)

// test

towerofhanoi(a.size(), a, b, c);

學習javaScript資料結構與演算法

建立陣列 var members 0,1,2,3,4,5,6,7,8 9,10 新增元素 向陣列末尾新增 members.push 11 向陣列開頭新增 members.unshift 1 刪除元素 從陣列末尾刪除 members.pop 從陣列開頭刪除 members.shift tips 通過p...

javascript資料結構與演算法 集合

集合是由一組無序且唯一 即不能重複 的項組成的。類似於一種特殊的陣列,因為無序所以不能通過索引進行訪問,不能重複意味著相同的元素在聽乙個集合裡面是只能存在乙份。封裝乙個集合類 在集合內部是不需要再次進行內部類的。function set 方法 常見的方法 add value 向集合新增乙個新的項。r...

資料結構 棧(JavaScript)

棧是一種遵從後進先出 lifo 原則的有序集合。新新增的或待刪除的元素都儲存在棧的 末尾,稱作棧頂,另一端就叫棧底。在棧裡,新元素都靠近棧頂,舊元素都接近棧底。舉個栗子,差不多這樣子。初始化棧的高度以及棧頂指標 var length 0 var top null 宣告常用方法 this.push f...