“常用公式”在线计算,“设计手册”在线查询
定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数min、push 以及pop 的时间复杂度都是O(1)。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 1 个关于本帖的回复 最后回复于 2013-8-16 10:28

沙发
王鹏 七品编修 发表于 2013-8-16 10:28:47 | 只看该作者
研发埠培训中心
Stack is a LIFO data structure. When some element is popped from the stack, the status will recover to the original status as before that element was pushed. So we can recover the minimum element, too.struct MinStackElement {  int data;  int min;};struct MinStack {  MinStackElement * data;  int size;  int top;}MinStack MinStackInit(int maxSize) {  MinStack stack;  stack.size = maxSize;  stack.data = (MinStackElement*) malloc(sizeof(MinStackElement)*maxSize);  stack.top = 0;  return stack;}void MinStackFree(MinStack stack) {  free(stack.data);}void MinStackPush(MinStack stack, int d) {  if (stack.top == stack.size) error(“out of stack space.”);  MinStackElement* p = stack.data[stack.top];  p->data = d;  p->min = (stack.top==0?d : stack.data[top-1]);  if (p->min > d) p->min = d;  top ++;}int MinStackPop(MinStack stack) {  if (stack.top == 0) error(“stack is empty!”);  return stack.data[--stack.top].data;}int MinStackMin(MinStack stack) {  if (stack.top == 0) error(“stack is empty!”);  return stack.data[stack.top-1].min;}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台