Design stack containing min function

//设计包含Min函数的栈
//定义栈的数据结构,要求添加一个函数,能够得到栈的最小元素。要求函数Min, push,pop的时间复杂度都是O(1).
#include <iostream> #include <cstdlib> 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){ std::cout<<"out of stack space."; } minStackElement *p=stack->data+stack->top; p->data=d; p->min=(stack->top==0?d:(stack->data+(stack->top-1))->min); if(p->min>d)p->min=d; stack->top++; } int minStackPop(minStack *stack){ if(stack->top==0) std::cout<<"stack is empty"; int po= (stack->data+stack->top)->data; stack->top--; return po; } int minStackMin(minStack *stack){ if(stack->top==0) std::cout<<"stack is empty"; return (stack->data+stack->top-1)->min; } int main(){ minStack *stack=minStackInit(5); minStackPush(stack,5); minStackPush(stack,6); minStackPush(stack,10); minStackPush(stack,7); int mini=minStackMin(stack); std::cout<<mini; std::cin>>mini; }
//PS:摘自某公司招聘题目,学习中,不喜随便喷

 

posted @ 2014-01-05 00:40  丸子No1  阅读(176)  评论(0编辑  收藏  举报