Stack data structure of the application (recording Min)

Minimum stack structure of the recording

Introducing a basic stack structure constructor

const Stack = require('./Stack')  // 导入基本的栈结构的构造函数

/**
 * @description 创建一个记录有最小值的栈结构的构造函数
 */
function MinStack() {

    // 当push的时候,这两个栈结构都要响应的添加一个值。
    const data_stack = new Stack() // 直接存值
    const min_stack = new Stack() // 判断一下,再存一个小值

    this.push = function (val) {

        data_stack.push(val)

        // 如果min_stack为空的话,直接将val的值push进去即可
        // 如果min_stack栈顶的值大于当前的val,也需要将val得值push进去
        if (min_stack.isEmpty() || val < min_stack.top()) {
            min_stack.push(val)
        } else {
            min_stack.push(min_stack.top())
        }
    }

    this.pop = function () {
        data_stack.pop()
        min_stack.pop()
    }

    // 获取最小值
    this.minVal = function () {
        return min_stack.top()
    }

}

const own_min_stack = new MinStack()

own_min_stack.push(2)
own_min_stack.push(3)
own_min_stack.push(5)
own_min_stack.push(1)

console.log(own_min_stack.minVal());

Guess you like

Origin www.cnblogs.com/guojbing/p/10990469.html