设计一个带有getMin功能的栈
【题目】
构造一个特殊的栈,除了具有栈的基本功能,还能返回栈中最小元素。
【要求】
1.pop、push、getMin操作的时间复杂度都是O(1)。
2.设计的栈类型可以使用现成的栈结构
【解法】
设计两个栈,一个是基本栈,用来保存数据;另一个用来记录栈中的最小值,随着基本栈中元素pop/push而改变。
【具体实现】
1.声明
#ifndef _GETMINSTACK_
#define _GETMINSTACK_
#include <stack>
using namespace std;
class MyStack{
public:
MyStack(){};//构造函数
~MyStack(){};//析构函数
void push(int elem);
int pop();
int getMin();
bool empty();
int top();
private:
stack<int> stackData; //私有对象不能直接访问
stack<int> stackMin;
};
#endif // _GETMINSTACK_
2.实现
#include <iostream>
#include "MyStack.h"
using namespace std;
void MyStack::push(int elem)
{
if(stackMin.empty())
{
stackMin.push(elem);
}
else if(elem<=