数据结构之栈结构

队列和栈的区别

队列结构:先进先出

栈结构:后进先出

画图理解栈

封装栈函数

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))
posted @ 2020-11-24 14:05  爱喝可乐的靓仔  阅读(88)  评论(0编辑  收藏  举报