단일 연결 리스트 공부를 하는 도중에 한 라인이 이해가 되질 않아서요...
질문드릴 코드...
#include <stdio.h>
#include <stdlib.h>
typedef struct _node {
int data;
struct _node *link;
}DATA, *PDATA;
PDATA nodeAlloc(int data) {
PDATA p = (PDATA)malloc(sizeof(DATA));
p->data = data;
p->link = NULL;
return p;
}
PDATA insertNode(PDATA head, int data) {
PDATA p = head, n = nodeAlloc( data );
if(head == NULL)
return n;
while(p->link) // 이해가 되지않는
p = p->link; // 두 라인...
p->link = n;
return head;
}
void printNode(PDATA p) {
for( ; p ; p = p->link)
printf(\"%4d\", p->data); }
main() {
PDATA head = NULL, p = NULL;
head = insertNode(head, 10);
head = insertNode(head, 20);
printNode(head);
}
질문: 저 두 라인을 어떻게 이해해야할까요?
while... p->link가 참이면? 흠....
while속 조건문이 참이라면 그 속의 내용이 실행되고,
p = p->link가 실행될텐데....
단일 연결 리스트가 어떻게 이어지는지에 대해선
다른 예제를 통해 이해가 완료된 상태인데...
저 두 라인을 이해할수가 없네요... 도와주세요!
컴파일러: Bloodshed Dev-C++ 4.9.9.2
사용 운영체제: Windows XP SP3 (32bit)
사용 언어: C언어
p= p->link 짓은 p에 그 다음 주소를 덥어쒸우는거쥐.. 그래서 p->link가 NULL이 나올때까지 진행한담에 p->link가 NULL이면 거따가 새로운 노드를 추가하는겨...
NULL이 나올때까지라는 말씀이 무슨 말씀이신지ㅠㅠ 그러니까, p->link가 NULL인지 NULL이 아닌지를 알아보는 코드라고 이해하면 되나요?
내가 호텔방을 잡아서 붕가붕가를 해야겠는데 방에 문열고 들어가니 어떤 쌍넘이 이미 방잡고 붕가붕가중이야..그래서 머라 했더니만 옆방을 가라는겨 갔지. 또 다른넘이 붕가중일세? 또 따지니 또 딴방알려주는겨.. 붕가할려면? 그넘이 알려준방이 비어있어야 내가 들어가서 붕가할꺼아님?
감사합니다! 한큐에 이해가 갔어요ㅋㅋㅋㅋㅋㅋㅋㅋ