c 배열로 스택구현하는데


int size = 10;

int top = 0;

int max_stack_size;



bool is_full();

bool is_empty();

void push(int*,int);

void pop(int*);

void showstack(int*);

void reallo(int*);



int main(void)

{

int x=0;

int data;

max_stack_size = size;

int* stack = (int*)malloc(size);


for (int i = 0; i < size; i++)

stack[i] = 0;


while (x != -1)

{

printf(" 뭐할래 ? ");

scanf_s("%d", &x);


switch (x)

{

case 1:

printf(" 데이터 입력\n ");

scanf_s("%d", &data);

push(stack, data);

showstack(stack);

break;

case 2:

printf(" POP ! \n ");

pop(stack);

showstack(stack);


}

}

free(stack);

return 0;

}


bool is_full()

{

if (top == size)

return true;

else

return false;

}


void push(int *stack,int data)

{

if (is_full)//여기 좀 이상한데 

{

printf(" REALLOC \n");

reallo(stack);

max_stack_size = size;

}

else

stack[top++] = data;

}


메인은 그냥 평범한메인인데 


is_full이 이상한건지 push함수에서 if( is_ full ) 이부분이 시작부터 true가돼서 리얼록만 주구장창하네... 그럼 시작부터 top이랑 size가 같다는뜻인데 top=0,size=10...


왜이럴까..? push 이프문에 ! is_full 하면 제대로됨.......


is_full 조건이 이상한건가?...