思路:典型得快慢指针问题,快指针与慢指针中间隔着k-2个节点,那么同时++快慢指针,当快指针指向链表结尾节点时,慢指针指向倒数第k个节点;
struct ListNode
{
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {
}
};
int kthToLast(ListNode *head, int k)
{
ListNode *left = head, *right = head;
int count = 1;
while (count < k)
{
right = right->next;
count++;
}
while (right->next)
{
left = left->next;
right = right->next;
}
return left->val;
}