作者:手机用户2602900587 | 来源:互联网 | 2023-10-12 13:53
原文链接:http:www.cnblogs.comwn19910213p3730312.html题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈
原文链接:http://www.cnblogs.com/wn19910213/p/3730312.html
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)
/*
剑指offer面试题21
感觉这道题目答案有点问题。
不解!
*/
#include
using namespace std;
#define Maxsize 100
struct stack{
int data[Maxsize];
int top;
}MinStack,DataStack;
void Init(stack &minstack,stack &datastack){
minstack.top = -1;
datastack.top = -1;
}
void push(int n){
if(DataStack.top == Maxsize-1){
return;
}
DataStack.top++;
DataStack.data[DataStack.top] = n;
if(MinStack.top == -1 || MinStack.data[MinStack.top] > n){
MinStack.top++;
MinStack.data[MinStack.top] = n;
}
else{
int Tmp = MinStack.data[MinStack.top];
MinStack.top++;
MinStack.data[MinStack.top] = Tmp;
}
}
void Min(){
cout < MinStack.top--;
}
int main()
{
Init(MinStack,DataStack);
int input;
cin >> input;
while(input != 0){
push(input);
cin >> input;
}
while(MinStack.top > -1){
Min();
}
return 0;
}
转载于:https://www.cnblogs.com/wn19910213/p/3730312.html