队列和栈的区别
队列结构:先进先出
栈结构:后进先出
画图理解栈
封装栈函数
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))