链表中倒数第k个结点
题目描述
输入一个链表,输出该链表中倒数第k个结点。
#include <iostream>
using namespace std;
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* FindKthToTail(ListNode *pListHead, unsigned int k) {
ListNode *list1 = pListHead;
ListNode *list2 = pListHead;
int i;
for ( i = 0; list1!=NULL; i++)
{
if (i>=k)
{
list2 = list2->next;
}
list1 = list1->next;
}
return i < k ? NULL : list2;
}
};
int main()
{
ListNode *L;
L = (ListNode *)malloc(sizeof(ListNode)); //申请头结点空间
L->next = NULL;
int i = 5;
while (i--)
{
ListNode *p;
p = (ListNode *)malloc(sizeof(ListNode)); //申请新的结点
p->val = i; //结点数据域赋值
p->next = L->next; //将结点插入到表头L-->|2|-->|1|-->NULL
L->next = p;
}
Solution *s = new Solution();
ListNode *r = s->FindKthToTail(L, 2);
cout << r->val << endl;
return 0;
}