void minStackPush(MinStack *stack, int element) { if(stack==NULL){//创建一个栈 minStackCreate(stack,MAXSIZE); } if(element<g_minValue){//更新最小值的位置 g_minIndex=g_index; g_minValue=element; } if(g_index<g_totalLen){ stack[g_index].val=element; g_index++; } else{//开辟一个2* maxSize的栈 MinStack *newstack=NULL; int len=g_totalLen; minStackCreate(newstack, g_totalLen*2); //将stack中的元素拷贝到newStack int i=0; for(;i<len;i++){ newstack[i]=stack[i]; } stack=newstack; stack[len].val=element; g_index=len+1; } }
int main() { MinStack* stack = (MinStack*)malloc(sizeof(MinStack)); minStackCreate(stack, 5); minStackPush(stack, 2); minStackPush(stack, 0); minStackPush(stack, 3); minStackPush(stack, 0); printf_s("%d ", minStackGetMin(stack)); minStackPop(stack); printf_s("%d ", minStackGetMin(stack)); minStackPop(stack); printf_s("%d ", minStackGetMin(stack)); minStackPop(stack); printf_s("%d ", minStackGetMin(stack)); printf_s("\n"); return 0; }