剑指Offer 链表中倒数第k个结点
代码的完整性
两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。
class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { ListNode* p1 = pListHead, *p2 = pListHead; for (int i = 0; i < k-1; i++) { if (p1 == NULL) { cout << "k > len(List)" << endl; return NULL; } p1 = p1->next; } if (p1 == NULL) return NULL; while (p1->next != NULL) { p1 = p1->next; p2 = p2->next; } return p2; } };