단일연결리스트를 표현하는 3가지 방법이다.
나는 마지막 걸 제대로 안다고 생각했는데 역시 아직 재귀를 잘 모른다.
void display1( ListNode *head ) {
for( ListNode *p = head; p != NULL; p = p->link )
printf( "%d->", p->data );
printf( "NULL\n" );
}
무난하게 for문을 이용해서 출력하는 것이다. 처음에 ListNode *p = head
라는 것을 주의하자
void display2( ListNode *head ) {
ListNode *p;
p = head;
while( p != NULL ) {
printf("%d->", p -> data );
p = p->link;
}
printf( "\n" );
}
가장 기본적으로 많이 나오는 예제이다. 그냥 이것도 이해했고 잘 사용하고 있었다. 하지만,,,
void display_recur( ListNode *head ) {
ListNode *p;
p = head;
if(p != NULL) {
printf("%d->", p->data );
p = p -> link;
}
}
여기가 문제였다. 재귀
로 생각해야 하지만 어떻게 해야 하는지 감을 잡지 못했다.
수정된 코드는 다음과 같다.
void display_recur( ListNode *head ) {
ListNode *p;
p = head;
if(p != NULL) {
printf("%d->", p->data );
display_recur(p->link);
}
}
재귀를 열심히 정리하자!