题意为需要定义一个新的栈类型的数据结构,然后在这个数据结构中可以有一个min函数,能够取出栈中的最小元素。
可以定义两个栈来完成这个数据结构,一个栈为数据栈,另一个为辅助栈,用于记录最小值。具体代码如下
class StackFindMinValue
{
Stack<int> dataStack = new Stack<int>();
Stack<int> minStack = new Stack<int>();
int minValue;
//入栈
public void push(int val)
{
dataStack.Push(val);
if (minStack == null)
{
minStack.Push(val);
minValue = val;
}else if (val < minValue)
{
minValue = val;
}
minStack.Push(minValue);
}
//出栈
public void pop()
{
dataStack.Pop();
minStack.Pop();
}
//查询最小值
public int popminvalue()
{
return minStack.Peek();
}
//查询顶部值
public int topquery()
{
return dataStack.Peek();
}
}