1、链表倒数第k个结点
题目描述:输入一个链表,输出该链表中倒数第k个结点。
解题思路:快慢指针。
#include<iostream>
using namespace std;
class ListNode {
int val;
struct ListNode *next;
public:
ListNode(int x) :val(x), next(NULL) {}
~ListNode()
{
ListNode *temp=this;
while(temp!=NULL)
{
temp=temp->next;
delete this;
}
}
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k);
};
ListNode* ListNode::FindKthToTail(ListNode* pListHead, unsigned int k)
{
ListNode *fast = pListHead;
ListNode *slow = pListHead;
for (int i = 0; i < k-1 && fast != NULL; i++)
{
fast = fast->next;
}
if (fast == NULL)cout<<"输入k非法"<<endl
while (fast->next != NULL)
{
fast = fast->next;
slow = slow->next;
}
return slow;
}