这个搞链表的方式真无聊。。。 我特么先用个vector读进来,转成个链表,再去找链表。。。 都vector了,直接找节点就好了。。 不过为了秀一把递归和链表操作,还是老老实实写了。。。
话说这种返回空指针,给个0是什么鬼。
正式考试也这样么。
#include <iostream>
#include <vector>
using namespace std;
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
ListNode() : m_nKey(0), m_pNext(nullptr) {}
ListNode(int x) : m_nKey(x), m_pNext(nullptr) {}
ListNode(int x, ListNode *next) : m_nKey(x), m_pNext(next) {}
};
ListNode *res;
ListNode *find(ListNode * l, int pos,int & size)
{
if(l->m_pNext==nullptr)
{
size=1;
if(size==pos)
res=l;
return l;
}
// size=size+1;
find(l->m_pNext,pos,size);
size++;
if(size ==pos)
res=l;
return l;
}
int main(){
int N;
vector<int> vec;
while(cin>>N)
{
for(int i =0;i<N;i++){
int q;
cin>>q;
vec.push_back(q);
}
int pos =0;
cin>>pos;
ListNode *l=new ListNode();
l->m_nKey=vec[0];
l->m_pNext=nullptr;
ListNode *p=l;
for(int i =1;i<vec.size();i++){
ListNode *ll=new ListNode();
ll->m_nKey=vec[i];
p->m_pNext=ll;
p=ll;
}
int size =0;
find(l,pos,size);
if(res)
cout<<res->m_nKey<<endl;
else
cout<<0<<endl;
}
return 0;
}