A8站源码交易平台 标题描绘
输入一个链表,输出该链表中倒数第k个结点。
思路:
双指针,先让一个指针pre走K-1步,然后再让另一个指针step从头指针开端和pre一同走,直到pre走到了指针的尾部
模仿进程如下图:
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == NULL || k <= 0)//判别参数的合法性
return NULL;
ListNode * pre = pListHead;
ListNode * step = pListHead;
for(int i = 0; i < k - 1; i++)//!!!进一步判别参数k的合法性
{
pre = pre->next;//pre走K-1步
if(!pre)
return NULL
}
while(pre ->next != NULL )//pre step一同走
{
pre = pre->next;
step = step -> next;
}
return step;//最终step 便是答案了
}
};