记录最小值的栈结构
导入基本的栈结构的构造函数
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());