【题目】
实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的栈。
【要求】
1、pop、push、getMin操作的时间复杂度都为O(1)
2、设计的站类型可以使用现成的栈结构
栈的一些基本定义模板:
//头文件
#include <stack>
//模板<类型名>
template <typename T>
struct specStack
{
stack <T> s;
stack <T> min;
//empty函数定义必须要用const。empty函数将返回一个布尔值。
bool empty() const
{
}
//push函数 无返回值,用void定义,且有参数。
void push(T param)
{
}
//pop函数。要先判空?非空才能进行pop
void pop()
{
}
//top函数。 要先判空?非空才能进行top
T top()
{
}
//size函数。有返回值,必须用int型。
int size()
{
}
};
int main()
{
//<>里面可以改变类型 。定义一个名叫s的栈
specStack <int> s;
}
下面提供两种思路:
s栈:用来保存当前栈中的元素。具有正常栈的功能。
min栈 :用于保存每一步的最小值。
思路一:
压入数据规则:
(1