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 조건이 이상한건가?...
if(is_full()) 를 해야지 if(is_full) 를 하면 무조건 true야..
어 맞네... ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 근데 is_full 하면 왜 무조건 트루야??
함수 주소가 리턴되거든 함수 주소가 임의로 null page를 할당해서 거기에 함수를 작성하지 않는 이상 null, 즉 false 일리가 없으니까
오!!! 하나알아감니다 고마웡