题目描述
输入一个链表,输出该链表中倒数第k个结点。
链表的题都不是很难,基本上就是考察编程的基本功,熟悉指针的指向;
这道题是打印倒数k个结点,那么就可以利用的个指针i、j,一个先走k-1步,另一个再同步走,当前者指向链表的尾指针时,那么后者指向的结点就为所求;最应该注意的是边界条件的判定,这是很多时候代码不能通过的重要因素。细节就看代码吧。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if (pListHead == NULL || k==0)
{
return NULL;
}
ListNode *pre = pListHead;
ListNode *cur = pListHead;
int i = 1;
while (i < k)
{
if (cur->next == NULL)
{
return NULL;
}
cur = cur->next;
i++;
}
while (cur->next != NULL)
{
pre = pre->next;
cur = cur->next;
}
return pre;
}
};