您的位置:首页 > 运维架构

设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。

2014-11-14 00:00 316 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  include delete struct class
相关文章推荐