資料結構之棧結構
阿新 • • 發佈:2020-11-24
佇列和棧的區別
佇列結構:先進先出
棧結構:後進先出
畫圖理解棧
封裝棧函式
function Stack() { this.container = []; } Stack.prototype = { constructor: Stack, //進棧執行 enter: function enter(element) { this.container.unshift(element) }, //出棧執行 leave: function leave() { return this.container.shift() }, //獲取棧元素的數量 size: function size() { return this.container.length; }, //獲取棧中的元素 value: function value() { return JSON.parse(JSON.stringify(this.container)) }, }; let st = new Stack(); for (let i = 1; i <= 6; i++) { st.enter(i) } console.log(st.value())
練習
// 按照6 5 4 3 2 1的順序進棧,中間可以隨時出棧,問下面哪一個出棧是不合法的
A:5 4 3 6 1 2
B:4 5 3 2 1 6
C:3 4 6 5 2 1
D:2 3 4 1 5 6
答案:選c 6進棧 5進棧 4進棧 3進棧 ->3出棧 4出棧 6出棧出現問題 6上面還有5 所以不合法
利用棧結構將十進位制轉化為二進位制
封裝函式
程式碼
function decimal2(decimal) { let stack = new Stack() while (decimal > 0) { let merchant = Math.floor(decimal / 2), remainder = decimal % 2 ; stack.enter(remainder); decimal = merchant } return stack.value().join('') } let n = 954284 console.log(n.toString(2)); console.log(decimal2(n))