void makenode(struct Node *header, int n);
struct Node{
int value;
struct Node *link;
}*header ;
void main(){
int i, n;
struct Node *header = (struct Node*)malloc(sizeof(struct Node));
header->link = NULL;
printf("몇 개의 값을 넣으시겠습니까?:");
scanf("%d", &i);
for (n = 0; n < i; n++)
makenode(header, n);
}
void makenode(struct Node *header, int n){ //n은 노드 생성갯수
struct Node *find, *product;
int i;
find = (struct Node*)malloc(sizeof(struct Node));
product = (struct Node*)malloc(sizeof(struct Node));
product->link = NULL;
find->link = header;
for (i = 0; i < n; i++)
find->link = find->link->link; ★★★
find->link->link = product; ★★★
printf("%d번째 값을 입력하시오:", n + 1);
scanf("%d", &product->value);
}
저기서 별표 친 부분이 이해가 안가..
예를 들어서 노드를 1개 만든다(n=1)고 했을때
find->link->link 가 가리키는건 header의 link를 말하는건데. 그 값은 NULL이잖아
NULL값을 find->link에 넣으면 결국엔 find가 가리키는건 아무것도 없지 않아?
이 코드는 내가 짠게 아니고 공부하려고 블로그에서 가져왔는데 설명이 제대로 안되있어서 도무지 이해가 안가..
형들 도와줘 ㅠㅠ
첫번째 별표. 다음 노드를 현제노드로설정
두번째 별표. 새로만든 노드를 노드뭉치 끝에 추가한다.
횽 이해가 잘 안가 ㅠㅠ..
find->link=header 이고 find->link->link는 header의 link를 말하는거 아니야?? 근데 위에서 header->link는 null로 초기화했는데
어떻게 이게 링크드 리스트가 되는건지 ㅠㅜ
null로 초기화는 이유는 '이 노드가 노드뭉치의 끝이다.'라는 걸알려주는 가장 관습적인 표현이다. 즉 header의 link가 null로 초기화 되므로 header가 노드뭉치의 끝이된다. find라는 노드는 할당할 필요는 없지만 그 밑 for반복문은 n만큼 루프를 돌려서 n번째의 노드를 find의 다음노드로 연결시킨다.
참고로 저런 찾기방법은 쓰레기중의 최상급 쓰레기다. 나중에 자세히 배우면 아시겠지.
아니 null이 관습적인 표현
기초공부하는거면 책보는게 시간 훨씬 절약한다. 검증되지 않은 놈들꺼 봐봤자 나중에 책 찾게 되있다
ㄴ 맞음.