您的位置:首页 > 理论基础 > 数据结构算法

To_10_r_100_2---设计包含min函数的栈

2015-06-08 17:25 423 查看

题目:

设计包含min函数的栈

定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。

方法一:

思路:栈中的每个元素维护一个min元素

C++代码实现:

struct MinStackElement{

 int value;

 int min;

};

class MinStack{

public:

 MinStack(int maxSize){

  data = new MinStackElement[maxSize];

  size = maxSize;

  top = 0;

 }

 ~MinStack(){

  delete[] data;

 }

 void MinStackPush(int in){

  if (top == size){

   cout << "ERROR: OUT OF STACK SPACE." << endl;

   return;

  }

  data[top].value = in;

  data[top].min = (top == 0 ? in : data[top - 1].min);

  if (data[top].min > in)

   data[top].min = in;

  top++;

 }

 int MinStackPop(){

  if (top == 0){

   cout << "ERROR: STACK IS EMPTY" << endl;

   return -2333333;

  }

  return data[--top].value;

 }

 int MinStackMin(){

  if (top == 0){

   cout << "ERROR: STACK IS EMPTY" << endl;

   return -2333333;

  }

  return data[top - 1].min;

 }

private:

 MinStackElement *data;

 int size;

 int top;

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构