链表倒数第n个节点
找到单链表倒数第n个节点,保证链表中节点的最少数量为n。
思路:设置两个指针first,second指向head,first指针先向前走n,然后两个指针一起走,first指针走到末尾,second走到倒数第n个指针!
代码
1 /** 2 * Definition of ListNode 3 * class ListNode { 4 * public: 5 * int val; 6 * ListNode *next; 7 * ListNode(int val) { 8 * this->val = val; 9 * this->next = NULL; 10 * } 11 * } 12 */ 13 14 15 class Solution { 16 public: 17 /* 18 * @param head: The first node of linked list. 19 * @param n: An integer 20 * @return: Nth to last node of a singly linked list. 21 */ 22 ListNode * nthToLast(ListNode * head, int n) { 23 // write your code here 24 if (NULL == head || n < 1) return NULL; 25 ListNode *first = head; 26 ListNode *second = head; 27 while (n) { 28 first = first->next; 29 n--; 30 } 31 while (first) { 32 first = first->next; 33 second = second->next; 34 } 35 return second; 36 } 37 };