题目:Given a linked list, remove the nth node from the end of list and return its head.
For example:
Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode *removeNthFromEnd(ListNode *head, int n) { ListNode *r = head, *s; if (head == NULL) return head; int i = 0; for (ListNode *p = head; p != NULL; p = p->next) { i++; } if (i == n) //删除第一个节点 { ListNode *l = head->next; free(head); return l; } for (int num = 0; num < i - n - 1; num++)//找到要删节点的前一个节点 { r = r->next; } ListNode *tmp = r->next; r->next = r->next->next; free(tmp); return head; }
时间: 2024-10-13 03:54:40