반응형
문제
Write a C function recursiveReverse()that recursively reverses the given linked list by changing its next pointer and its head pointer.
Jungle-C-Data-Structure/Data-Structures/Linked_List/Q7_A_LL.c at master · yeooonee/Jungle-C-Data-Structure
Contribute to yeooonee/Jungle-C-Data-Structure development by creating an account on GitHub.
github.com
문제풀이
ListNode *reverseHelper(ListNode *cur){
if (cur == NULL || (*cur).next == NULL){
return cur;
}
ListNode *rest;
rest = reverseHelper(cur->next); // 다음노드로 재귀 호출
cur->next->next = cur; // 다음다음노드의 next 현재 주소로 변경
cur->next = NULL; // 다음 노드 NULL 처리 (순환 오류 빌미 제거)
return rest;
}
void RecursiveReverse(ListNode **ptrHead)
{
// *ptrHead = node 주소
*ptrHead = reverseHelper(*ptrHead);
}
어려웠던 점
이 문제는 접근 자체가 어려웠다. AI 의 도움을 받아 풀었고, 사후적으로 분석하였다. 재귀는 작은 문제를 쪼개고, 그것이 반복하는지를 확인하는게 중요한데 나는 최소 단위로 쪼개는 연습이 많이 필요할 것 같다. 자꾸 전체적으로 해결하려고 하니까 재귀 감을 못 잡는 것 같다.
반응형