数据结构-包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)

/*
剑指offer面试题21
感觉这道题目答案有点问题。
不解!
*/
#include <iostream>

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.data[MinStack.top];
    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