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...