같은 printf문인데 어떤건 값을 어떤건 주소를 찍습니다.
파란
#includestdio.h
#includestdlib.h
typedef struct Listnode
{
int data;
struct Listnode *link;
}List;
void insert_f(List **head, List **pre, List *last, int value);
void delete_f(List **head, List *remove);
void print_f(List **head, List **pre, List *last);
void main()
{
List *head = NULL;
List *pre = NULL;
int num, insert_value;
while(1)
{
printf(\n);
printf(삽입은 1, 삭제는 2를 입력 : );
scanf(%d, &num);
if(num == 1)
{
printf(삽입할 정수 입력 : );
scanf(%d, &insert_value);
insert_f(&head, &pre, head, insert_value);
print_f(&head, &pre, head);
}
if(num == 2)
{
delete_f(&head, head);
print_f(&head, &pre, head);
}
}
}
void insert_f(List **head, List **pre, List *last, int value)
{
List *insert_node;
insert_node = (List *)malloc(sizeof(List));
insert_node - data = value;
printf(%3d, insert_node - data); --여기선 insert_node -data가 값을 찍고
if(*head == NULL)
{
*head = insert_node;
insert_node - link = insert_node;
}
printf(%3d %3d, **head, insert_node - data); --**head는 값을 찍는데 여기선 insert_node -data가주소를 찍습니다.
}
void delete_f(List **head, List *remove)
{
List *fp;
if(*head == NULL)
{
printf(삭제할 노드가 없습니다);
}
else if(remove - link == NULL)
{
*head = NULL;
free(remove);
}
else
{
while(remove - link != NULL)
{
if(remove - link - link == NULL)
{
fp = remove;
}
remove = remove - link;
}
fp - link = NULL;
free(remove);
}
}
void print_f(List **head, List **pre, List *last)
{
/*if(*head == last - link)
{
printf(%d - , last - data);
}
else
{
while(last - link != *pre)
{
printf(%d - , last - data);
last = last - link;
}
}*/
}
윗 질문 그대로입니다.
왜 저런 현상이 나타나는 거죠?
디버깅 해보니깐 값은 잘 들어갔더군요.
-
큰꽃
감사합니다.
-
새솔
printf(\%3d %3d\