删除单链表倒数第n个节点
删除链表的倒数第n个节点
http://www.nowcoder.com/questionTerminal/f95dcdafbde44b22a6d741baf71653f6
思路:首先遍历一次得到链表长度 len , 要删除的结点便是正数第(len - n)个。考虑删除头结点(len - n == 0)的特例,直接返回head->next,否则遍历到第(len - n)- 1个结点,将其指向 ->next->next,返回head。
ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode *cur = head; int len = 0; while(cur != nullptr){ cur = cur->next; ++len; } if(len == n) return head->next; cur = head; while(len - n > 1){ cur = cur->next; --len; } ListNode *temp = cur->next; return head; }