输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
正常返回倒数第k个结点指针,异常返回空指针
数据范围:链表长度满足 , ,链表中数据满足
本题有多组样例输入。
输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
正常返回倒数第k个结点指针,异常返回空指针
数据范围:链表长度满足 , ,链表中数据满足
本题有多组样例输入。
//调试时,显示数组越界等问题,原因是该题倒数第0个结点比较扯,给出结果为0,题意并未提示
#include<iostream>
using namespace std;
struct ListNode{
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL){}
};
int main(){
int nums;
while(cin >> nums){
ListNode *pHead = new ListNode(-1);
ListNode *p = pHead;
for(int i = 0; i < nums; ++i){
int data;
cin >> data;
ListNode *q = new ListNode(data);
p->next = q;
p = p->next;
}
int Kth;
cin >> Kth;
p = pHead;
if(Kth == 0) // 边界测试
cout << "0" << endl;
else if(nums-Kth >= 0){
for(int i = 0; i <= nums-Kth; ++i)
p = p->next;
cout << p->val << endl;
}
else
cout << "NULL" << endl;
}
return 0;
}