题目描述:
输入一个链表,输出该链表中倒数第k个结点。K=0.。。。。N。
思路:从链表头到倒数第K个节点长度=正数第K个节点到链表尾,让p,q指向表头,先让p指针走到正数第K个节点,然后让P,q同时往后走,当p指针走到表尾时,q正好走到倒数第K个节点。
代码实现:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
//从链表头到倒数第K个节点长度=正数第K个节点到链表尾,让p,q指向表头,先让p指针走到正数第K个节点,然后让P,q同时往后走
//当p指针走到表尾时,q正好走到倒数第K个节点。
ListNode *p,*q;
p=pListHead;
q=pListHead;
unsigned int i=0;
while(i<k)
{
if(!p) return nullptr;
else{
p=p->next;
i++;
}
}
while(p)
{
p=p->next;
q=q->next;
}
return q;
}