编程语言
首页 > 编程语言> > JS数据结构与算法-栈结构

JS数据结构与算法-栈结构

作者:互联网

一.认识栈结构

二.栈的面试题

3 4 6 5 2 1

三.栈结构的实现

function Stack() {
    //栈中的属性
    this.items = []
}

四.栈的操作

现在,我们可以在类中一一实现这些方法!

function Stack() {
    //栈中的属性
    this.items = []

    //栈的相关操作

    //1.将元素压入栈
    // this.push = function(){} 给某一个对象的实例添加方法
    Stack.prototype.push = function (element) {
        this.items.push(element)
    }//给整个类添加方法,是共享的,节省内存,提升效率

    //2.从栈中取出元素
    Stack.prototype.pop = function () {
        return this.items.pop()
    }

    //3.查看栈顶元素
    Stack.prototype.peek = function () {
        return this.items[this.items.length - 1]
    }

    //4.判断栈是否为空
    Stack.prototype.isEmpty = function () {
        return this.items.length === 0
    }

    //5.获取栈中元素的个数
    Stack.prototype.size = function () {
        return this.items.length
    }

    //6.toString方法
    Stack.prototype.toString = function () {
        let resultString = ''
        for (let i = 0; i < this.items.length; i++) {
            resultString += this.items[i] + ''
        }
        return resultString
    }
}
//栈的使用
let stack = new Stack()

stack.push(10)
stack.push(20)
stack.push(30)
stack.push(40)
stack.push(50)

console.log(stack);//Stack { items: [ 10, 20, 30, 40, 50 ] }

console.log(stack.pop());//50
console.log(stack.pop());//40
console.log(stack.pop());//30

console.log(stack.peek());//20

console.log(stack.isEmpty());//false

console.log(stack.size());//2

console.log(stack.toString());//1020

五.栈的应用

十进制转二进制

//十进制转换为二进制
function dec2bin(decNumber) {
    //1.定义一个栈对象
    let stack = new Stack()

    //2.循环操作
    while (decNumber > 0) {
        //2.1获取余数,并且放入到队列中
        stack.push(decNumber % 2)
        //2.2获取整除后的结果作为下次运算的数字
        decNumber = Math.floor(decNumber / 2)
    }

    //3.从栈中取出0和1

    let binaryString = ''
    while (!stack.isEmpty()) {
        binaryString += stack.pop()
    }
    return binaryString
}

console.log(dec2bin(100));//1100100
console.log(dec2bin(1000));//1111101000

标签:console,log,JS,items,栈顶,stack,算法,数据结构,Stack
来源: https://www.cnblogs.com/atrox493/p/16414854.html