题目描述:
输入一个链表,输出该链表中倒数第k个结点。
/*
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==nullptr||k==0)
return nullptr;
ListNode* head=pListHead;
int n=0;
while(pListHead)
{
pListHead=pListHead->next;
n++;
}
while((n-k)&&head)
{
head=head->next;
n--;
}
return head;
}
};
思路二:
定义两个指针,一个指针先走k-1步
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead==nullptr)
return nullp