您的位置:首页 > 编程语言 > C语言/C++

设计一个有getMin功能的栈-c++

2016-10-17 13:33 405 查看
题目:实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。

算法思路:详见程序员代码面试指南 左程云著。page:1-3

c++实现代码:

#include <iostream>
#include <vector>
#include <iterator>
#include <stack>
using namespace std;

class MyStack{
public:
MyStack() = default;
void  my_push(int val);
void my_pop(void);
bool my_empty(void){return stackdata.empty() ? true:false;}
int getMin(void){ return stackmin.top();}
private:
stack<int> stackdata;
stack<int> stackmin;
};

void MyStack::my_push(int val)
{
stackdata.push(val);
if(stackmin.empty() || (stackmin.top() >= val))
stackmin.push(val);
}
void MyStack::my_pop(void)
{
if(!stackdata.empty())
{
int top_val = stackdata.top();
stackdata.pop();
if(!stackmin.empty() && top_val == stackmin.top())
{
stackmin.pop();
}
}
else
cout << "mystack is empty!\n"<< endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ getMin