Programming/C C++

[DS] Print in Reverse

연결리스트의 head 노드를 파라미터로 전달받고 해당 연결리스트를 역순으로 출력하는 코드를 작성해야 한다.

처음엔 while문을 이용해 역순의 연결리스트를 생성해서 다시 while문을 사용해 값들을 출력하도록 했었는데 Time Limit에 걸려 통과되지 않았다..

그래서 재귀함수의 형태로 코드를 작성했다. <<성공!!!!!

재귀함수의 형태로 매개변수 head가 null일때는 더이상 다른 명령을 실행할 필요가 없기 때문에 return;을 적고

그렇지 않을 때에는 함수를 재귀호출하여 head->next를 인자로 전달한다.

위 두 문장을 if-else문으로 작성하고 마지막 줄에 data를 출력하도록 printf문을 작성한다. 재귀호출하였기 때문에 끝까지 도달하면 역순으로 거슬러올라오면서 값들을 출력하게 될 것이다.

void reversePrint(SinglyLinkedListNode* head) {
//    SinglyLinkedListNode* reverse;
    if(head == NULL)    return;
    else {
    reversePrint(head->next);
    }
    printf("%d\n", head->data);
}
SMALL

'Programming > C C++' 카테고리의 다른 글

Cats and a Mouse  (0) 2020.11.22
[DS] Delete duplicate-value nodes from a sorted linked list  (0) 2020.11.08
Angry Professor  (2) 2020.11.08
Eletronics Shop  (0) 2020.11.08
[DS] Get Node Value  (0) 2020.10.04