JavaScript实现简易版的栈,队列功能 + 栈实现十进制转二进制 + 队列实现击鼓游戏思想

JavaScript实现简易版的栈+用栈实现十进制转二进制

//栈结构
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 < n+1; i++) {
        qe.enter(i)
    }
    //循环到只剩下一个人
    while(qe.size()>1){
        //将非指定数字的人从前面移除,放到队列后面
        for(let i = 0 ; i < m-1;i++){

            qe.enter(qe.leave())
        }
        // 将指定数字的人从前面移除
        qe.leave()
    }
    return qe.value().toString()
}
console.log(game(5,3))
发布了128 篇原创文章 · 获赞 52 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44523860/article/details/105317406