设计包含min函数的栈
来源:互联网 发布:淘宝交易指数查询 编辑:程序博客网 时间:2024/04/30 00:54
//入栈的同时.将最小值入辅助栈,出栈时,将辅助栈当前最小值也出栈
#include <stack>
#include <iostream>using namespace std;
struct Node
{
int data;
Node *next;
};
class Cstack
{
public:
Cstack()
{
mphead = new Node;
mphead->data = -1;
mphead->next = NULL;
}
Node *Buy_Node(int val)
{
Node *p = new Node;
p->data = val;
p->next = NULL;
return p;
}
void Push_val(int val)
{
Node *p = Buy_Node(val);
p->next = mphead->next;
mphead->next = p;
if(m_stack.empty())
{
m_stack.push(val);
}
else
{
int mval = m_stack.top();
if(val < mval)
{
m_stack.push(val);
}
else
m_stack.push(mval);
}
}
void Pop_val()
{
Node *p = mphead->next;
mphead->next = p->next;
delete p;
m_stack.pop();
}
int Get_top()
{
Node *p = mphead->next;
return p->data;
}
int Get_min()
{
return m_stack.top();
}
void Show()
{
Node *p = mphead->next;
for(; p!=NULL; p=p->next)
{
cout<<p->data<<" ";
}
cout<<endl;
}
~Cstack()
{
delete mphead;
mphead = NULL;
}
private:
Node *mphead;
stack<int> m_stack;//定义了一个辅助栈
};
int main()
{
Cstack stack1;
stack1.Push_val(3);
stack1.Push_val(5);
stack1.Push_val(6);
stack1.Push_val(2);
stack1.Push_val(1);
stack1.Push_val(8);
stack1.Show();//可得目前栈内的结果是8 1 2 6 5 3
int val = stack1.Get_min();
cout<<val<<endl;//目前最小值是1
stack1.Pop_val();
stack1.Pop_val();
int rval = stack1.Get_min();//将栈内的8 1 出栈 此时辅助栈最小值为2
cout<<rval<<endl;
stack1.Pop_val();
int tval = stack1.Get_min();//将栈内的2出栈 此时辅助栈最小值为3
cout<<tval<<endl;
return 0;
}
1 0
- 设计包含min函数的栈
- 设计包含min函数的栈
- 转载 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含 min 函数的栈
- 设计包含min函数的栈
- 2.设计包含min函数的栈
- 2、设计包含min 函数的栈
- 设计包含min函数的栈---Algorithms
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 2.设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 用static关键字修饰类
- 现场升级方案:采用U盘方式进行程序IAP升级功能的实现
- Android WebView与js交互通信
- Retrofit2+okHttp3使用样例
- 高性能web站点
- 设计包含min函数的栈
- (一)CocoaPods的使用及其原理
- win10 输入法无法切出
- java中常见jar包的作用
- 自定义ViewGroup实现换行
- 利用x-requested-with判断请求是否是Ajax请求
- cocos2dx--两个场景切换各函数调用顺序
- android代码访问APN数据
- ibatis的使用手册