링크드 리스트의 head노드가 주어진다. 해당 링크드리스트의 뒤에서 n번째 노드를 삭제하라.
https://leetcode.com/problems/remove-nth-node-from-end-of-list/
노드를 순회하면서 매노드마다 n번 이동해서 node->next가 NULL이면 해당 노드를 제거하면 된다.
struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
struct ListNode *node = head, *prev = head, *check = head;
int node_cnt = 0;
bool found = false;
for (; node != NULL; prev = node, node = node->next) {
check = node;
for (int i = 0; i < n; i++) {
if (i == n - 1 && check->next == NULL) {
found = true;
break;
}
check = check->next;
}
if (found) {
// remove node
if (node == head)
head = node->next;
else
prev->next = node->next;
break;
}
}
return head;
}