Exemplo n.º 1
0
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;
	}   
}
Exemplo n.º 2
0
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;
}