diff --git a/Delete Nth Node in Linked List in C b/Delete Nth Node in Linked List in C new file mode 100644 index 0000000..b8d0ef6 --- /dev/null +++ b/Delete Nth Node in Linked List in C @@ -0,0 +1,23 @@ +struct ListNode* removeNthFromEnd(struct ListNode* head, int n) { + struct ListNode *dummy = malloc(sizeof(struct ListNode)); + dummy->next = head; + + struct ListNode *first = head; + struct ListNode *second = dummy; + + for (int i = 0; i < n; i++) + first = first->next; + + while (first != NULL) { + first = first->next; + second = second->next; + } + + struct ListNode *del = second->next; + second->next = second->next->next; + free(del); + + struct ListNode *newHead = dummy->next; + free(dummy); + return newHead; +}