数据结构之栈的应用(记录最小值)

发布时间:2019-06-08 22:00:11发布者:Mr.Zhang阅读(36)

记录最小值的栈结构

导入基本的栈结构的构造函数

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());




本文转自博客园,原文地址:https://www.cnblogs.com/guojbing/p/10990469.html