Print in Reverse | HackerRank
Print the elements of a linked list in reverse order, from tail to head
www.hackerrank.com
<문제>

input으로 하나의 list를 입력받으면, list를 반대로 출력하는 문제이다.
<코드>
void reversePrint(SinglyLinkedListNode* llist) {
struct SinglyLinkedListNode *head=llist;
if(head==NULL){
return;
}
else{
reversePrint(head->next);
printf("%d\n",head->data);
}
}
<풀이>
for 반복문으로 풀다가 재귀함수를 사용하면 코드가 더 간단해질 거 같아 재귀함수를 사용했다.
먼저 head 포인터가 llist를 가리키게 하였고, 만약 head가 null이라면 재귀함수가 linked list의 마지막을 가리키고 있다는 것이므로 그냥 리턴만 하였다. 조건식이 거짓이라면 reversePrint(head->next) 문장이 실행된다. 이 재귀함수는 head가 리스트의 마지막까지 갈 때까지 반복되고, 리스트의 마지막에 도착한다면 printf()를 통해 리스트를 거꾸로 하나씩 출력하게 하여 문제를 풀었다.
<실행결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글
| [HackerRank] Drawing Book (0) | 2021.07.27 |
|---|---|
| [HackerRank] Utopian Tree (0) | 2021.07.27 |
| [HackerRank] Sales by Match (0) | 2021.07.22 |
| [HackerRank] Strong Password (0) | 2021.07.22 |
| [HackerRank] Reverse a linked list (0) | 2021.07.22 |