输入一个链表,输出该链表中倒数第k个结点
思路:两个节点。
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
//2017-6-19 周一 设定两个指针。
//相差为k;
//健壮性,判断链表是否大于k
//思想是对的,但是代码逻辑有问题。
//问题在哪里呢?
判断链表和k的值是否有意义。
if(pListHead==NULL||k==0)
return NULL;
ListNode *p0=pListHead;
ListNode *pk=pListHead;
//找到k位置。
for(unsigned int i=0;i<k-1;i++)
{
//
if(pk->next!=NULL)
pk=pk->next;
else
return NULL;
}
//多了一步
//设置返回值
while(pk->next!=NULL)
{
pk=pk->next;
p0=p0->next;
}
return p0;
}
};