描述
输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
链表结点定义如下:
struct ListNode { int m_nKey; ListNode* m_pNext; };
正常返回倒数第k个结点指针,异常返回空指针.
要求:
(1)正序构建链表;
(2)构建后要忘记链表长度。
数据范围:链表长度满足 1≤n≤1000 1≤n≤1000 , k≤n k≤n ,链表中数据满足 0≤val≤10000 0≤val≤10000
本题有多组样例输入。
输入描述:
输入说明
1 输入链表结点个数
2 输入链表的值
3 输入k的值
输出描述:
输出一个整数
示例1
输入:
8 1 2 3 4 5 6 7 8 4
输出:
5
#include<bits/stdc++.h>
using namespace std;
struct ListNode
{
int m_nKey;
ListNode *m_pNext;
};
ListNode *head = new ListNode();//创建头节点
void CreateList(int a[],int n)//尾插法创建单列表
{
ListNode *s,*r;
r=head;
for(int i=1;i<=n;i++)
{
s=new ListNode();//创建新节点
s->m_nKey =a[i];
r->m_pNext=s;
r=s;
}
r->m_pNext =NULL;
}
void Display(int m,int n)
{
ListNode *p;
p=head->m_pNext;
if(m<=0)
{
cout<<0<<endl;
return ;
}
for(int i=1;i<n-m+1;i++)
{
p=p->m_pNext;
}
cout<<p->m_nKey<<endl;
}
int main()
{
int n,m,a[10001];
while(cin>>n)
{
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cin>>m;
CreateList(a,n);
Display(m,n);
}
return 0;
}