//栈结构
class Stack {
container = [];
//进栈
enter(element) {
this.container.unshift(element)
}
//出栈
leave(element) {
return this.container.shift(element)
}
size() {
return this.container.length
}
value() {
return this.container
}
}
let num = 58;
console.log(num.toString(2)) //111010
// 十进制转二进制,注意此处的栈是从头部塞入,输出的顺序才会符合要求
Number.prototype.change = function change() {
let sk = new Stack;
let yu = this.valueOf()
if (yu === 0) return '0'
while (yu > 0) {
sk.enter(yu % 2)
yu = Math.floor(yu / 2)
}
return sk.value().join('')
}
console.log(num.change()) //111010
JavaScript实现简易版的队列功能+队列实现击鼓游戏思想
队列结构
class Queue {
container = [];
//进队列
enter(element) {
this.container.push(element)
}
//出队列
leave() {
return this.container.shift()
}
size() {
return this.container.length
}
value() {
return this.container
}
}
//击鼓游戏,n个人,m个数
function game(n, m) {
let qe = new Queue;
//放入n个人
for (let i = 1; i 1){
//将非指定数字的人从前面移除,放到队列后面
for(let i = 0 ; i < m-1;i++){
qe.enter(qe.leave())
}
// 将指定数字的人从前面移除
qe.leave()
}
return qe.value().toString()
}
console.log(game(5,3))