码迷,mamicode.com
首页 > 编程语言 > 详细

设计一个有getMin功能的栈(C++实现)

时间:2020-07-25 09:28:16      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:nbsp   src   iostream   技术   pop   his   exce   代码   err   

代码:

#include <iostream>
#include <stack>
# include <string>
#include <stdexcept>

using namespace std;

class my_stack
{
public:
  my_stack(){};
  ~my_stack(){};
  int my_push(int var);
  int my_pop();
  int getmin();
  bool Empty();
private:
  stack<int> stackdata;
  stack<int> stackmin;
};

//实现代码
int my_stack::my_push(int var)
{
  stackdata.push(var);
  if(stackmin.empty()||stackmin.top()>=var)
       stackmin.push(var);
  
  return 0;
}

int my_stack::my_pop()
{
  if(stackdata.empty()){
        throw runtime_error("Empty Stack!");
      }

  int top_value = stackdata.top();//返回stackdata栈顶元素
  stackdata.pop();//弹出stackdata栈顶元素
 
  return top_value;
  }

int my_stack::getmin()
{
  if(stackmin.empty())
      throw runtime_error("Empty Stack!");
  else
     {
      int min_value = stackmin.top();
   
      return min_value;
     }  
}
bool my_stack::Empty()
{
  if(stackdata.empty())
       return true;
  else
       return false;
}

int main()
{
  my_stack mystack;
  int a[] = {1,3,2,2,1,5};
  for(int i=0;i<6;i++)
  {
    mystack.my_push(a[i]);
  }
  while(!mystack.Empty())
  {
    std::cout <<"this is stack data:"<< mystack.my_pop() << ‘\n‘;
    
  }
  std::cout <<"this is min_data_of_stackdata:"<< mystack.getmin() << ‘\n‘;
  cin.get();
  return 0;
}
结果:
技术图片

 

 

设计一个有getMin功能的栈(C++实现)

标签:nbsp   src   iostream   技术   pop   his   exce   代码   err   

原文地址:https://www.cnblogs.com/shiheyuanfang/p/13375223.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!