1 typedef struct {
2
3 int data[10000];
4 int top;
5 } MinStack;
6
7 /** initialize your data structure here. */
8
9 MinStack* minStackCreate() {
10 MinStack *st;
11 st = (MinStack *)malloc(sizeof(MinStack));
12 st->top=-1;
13 //st->data = (int *)malloc(sizeof(int)*100000);
14 return st;
15 }
16
17 void minStackPush(MinStack* obj, int val) {
18
19 obj->data[++(obj->top)]=val;
20 }
21
22 void minStackPop(MinStack* obj) {
23 obj->data[(obj->top)--];
24 }
25
26 int minStackTop(MinStack* obj) {
27 return obj->data[obj->top];
28 }
29
30 int minStackGetMin(MinStack* obj) {
31 int min=obj->data[0];
32 for(int i=0;i<=obj->top;i++)
33 {
34 if(min>(obj->data[i]))
35 {
36 min = obj->data[i];
37 }
38 }
39
40 return min;
41 }
42
43 void minStackFree(MinStack* obj) {
44 free(obj);
45 }
46
47 /**
48 * Your MinStack struct will be instantiated and called as such:
49 * MinStack* obj = minStackCreate();
50 * minStackPush(obj, val);
51
52 * minStackPop(obj);
53
54 * int param_3 = minStackTop(obj);
55
56 * int param_4 = minStackGetMin(obj);
57
58 * minStackFree(obj);
59 */