#include <iostream>
#include <assert.h>
using namespace std;
#define MAXN 100
struct Data
{
int data;
int minData;
};
class MinStack
{
public:
Data **data;
int top;
int size;
public:
MinStack()
{
size =MAXN;
data = new Data*[MAXN];
top = 0;
}
~MinStack()
{
delete[] data;
}
void push(int value)
{
assert(top != size);
Data *d = new Data;
d->data = value;
d->minData = (top == 0)?value:data[top-1]->minData;
if(d->minData > value)
d->minData = value;
data[top++] = d;
}
int pop()
{
assert(top != 0);
return data[--top]->data;
}
int min()
{
assert(top != 0);
return data[top-1]->minData;
}
};
int main()
{
MinStack s;
s.push(1);
s.push(2);
s.push(0);
cout << s.min()<<endl;
s.pop();
cout << s.min()<<endl;
return 0;
}
设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。
最新推荐文章于 2021-05-27 09:26:54 发布