其他分享
首页 > 其他分享> > 数据结构-包含min函数的栈

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

作者:互联网

原文链接:http://www.cnblogs.com/wn19910213/p/3730312.html

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的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

标签:MinStack,函数,min,int,top,input,DataStack,数据结构,data
来源: https://blog.csdn.net/weixin_30251587/article/details/97546163