단일연결리스트 display recursion

줍줍·2023년 4월 2일
0

C

목록 보기
5/15
post-thumbnail

단일연결리스트를 표현하는 3가지 방법이다.

나는 마지막 걸 제대로 안다고 생각했는데 역시 아직 재귀를 잘 모른다.

display 1 for loop


void display1( ListNode *head ) {
	for( ListNode *p = head; p != NULL; p = p->link )
		printf( "%d->", p->data );
	printf( "NULL\n" );
}

무난하게 for문을 이용해서 출력하는 것이다. 처음에 ListNode *p = head라는 것을 주의하자

display 2 while loop


void display2( ListNode *head ) {
	ListNode *p;
	p = head;
	while( p != NULL ) {
		printf("%d->", p -> data );
		p = p->link;
	}
	printf( "\n" );
}

가장 기본적으로 많이 나오는 예제이다. 그냥 이것도 이해했고 잘 사용하고 있었다. 하지만,,,

display 3 recursion


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);
	}
}


재귀를 열심히 정리하자!

profile
쉽게 설명하지 못하면 이해 못한 것

0개의 댓글