연결리스트 전방삽입 부분인데요. 그런데 제가 이해를 잘 못해서요.
앵겨쪼
#includestdio.h
#includestdlib.h
typedef struct Listnode
{
int data;
struct Listnode *link;
}List;
void insert(List *head, int value);
void print(List *head);
void main()
{
List *head;
head = (List *)malloc(sizeof(List));
head - data = 1;
head - link = NULL;
int num, insert_value;
while(1)
{
printf(\n);
printf(연결리스트 삽입은 1과 삽입할 값을 입력하세요 : );
scanf(%d %d, &num, &insert_value);
if(num == 1)
{
insert(head, insert_value);
print(head);
}
}
free(head);
}
void insert(List *head, int value)
{
List *new_node;
new_node = (List *)malloc(sizeof(List));
new_node - data = value;
new_node - link = head - link; -- 핵심이라 할 수 있는 이 두 줄 소스인데요.
head - link = new_node; -- 두 번째 부분입니다.
}
void print(List *head)
{
while(head != NULL)
{
printf(%d - , head - data);
head = head - link;
}
}
저 소스에서 약간 이해가 안되는 것이 new - link = head 이런식으로 넘겨줘야 head의 주소값이 넘어가면서 새로운 노드를 첫번째 노드로 가리킬수 있는거 아닌가요?
두 번째 부분도 head = new_node 이런식으로 주소를 넘겨야 하지 않나요?
왜 head가 가리키는 link의 주소값이 넘어가는 거죠?
제가 아직 포인터를 잘 이해를 못했나 봅니다.
죄송하지만 알려주세요.
-
MyWay
감사합니다.