编程习题—— Min Stack。原题:
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
Example:
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> Returns -3. minStack.pop(); minStack.top(); --> Returns 0. minStack.getMin(); --> Returns -2.
代码如下:
typedef struct { int* intStack; int top; int max; } MinStack; /** initialize your data structure here. */ MinStack* minStackCreate(int maxSize) { MinStack* testStack; testStack=(MinStack*)malloc(sizeof(MinStack)); testStack->top=-1; testStack->max=maxSize; testStack->intStack=(int*)malloc(sizeof(int)*maxSize); return testStack; } void minStackPush(MinStack* obj, int x) { obj->top+=1; *(obj->intStack+obj->top)=x; } void minStackPop(MinStack* obj) { obj->top-=1; } int minStackTop(MinStack* obj) { return *(obj->intStack+obj->top); } int minStackGetMin(MinStack* obj) { int min=INT_MAX; for(int n=0;n<=obj->top;n++) { if(*(obj->intStack+n)intStack+n); } } return min; } void minStackFree(MinStack* obj) { free(obj->intStack); free(obj); } /** * Your MinStack struct will be instantiated and called as such: * struct MinStack* obj = minStackCreate(maxSize); * minStackPush(obj, x); * minStackPop(obj); * int param_3 = minStackTop(obj); * int param_4 = minStackGetMin(obj); * minStackFree(obj); */