目录
前言
本人刷剑指offer的一些程序记录,头文件,主函数都齐全,可直接上机运行
一、题目
定义
栈
的数据结构,请在类型中实现⼀个能够得到
栈
最⼩元素的
min
函数。
二、程序
1.头文件
#include <iostream>
#include <stack>
using namespace std;
2.类和主函数
class solution
{
public:
void push(int value)
{
Data.push(value);
if(Min.empty()) Min.push(value);
if(Min.top()>value) Min.push(value);
}
void pop()
{
if(Data.top()==Min.top()) Min.pop();
Data.pop();
}
int top()
{
return Data.top();
}
int min()
{
return Min.top();
}
private:
stack<int> Data;
stack<int> Min;
};
int main()
{
solution stu;
int n,data,flag;
cout<<"请输入栈的初始长度:"<<endl;
cin>>n;
cout<<"请初始化栈"<<endl;
for(int i=0;i<n;i++)
{
cin>>data;
stu.push(data);
}
int a=1;
while(a)
{
cout<<"请选择(1)入栈(2)出栈(3)结束"<<endl;
cin>>flag;
switch(flag)
{
case 1:
{
cout<<"请输入要进栈的元素"<<endl;
cin>>data;
stu.push(data);
break;
}
case 2:
{
int arr=stu.top();
stu.pop();
cout<<"出栈的元素为:"<<arr<<endl;
break;
}
case 3:a=0;break;
default:cout<<"ERROR";return -1;
}
}
cout<<"栈中最小值为:"<<endl<<stu.min();
}