题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
#include <climits> #include <iostream> using namespace std; struct ListNode { int m_nKey; ListNode* m_pNext; }; ListNode* fun(ListNode* q,int& num) { if(q==NULL) return NULL; ListNode* p=fun(q->m_pNext,num); //在找到指定结点前p一直返回NULL,在找到后由于将q返回给上一层p故之后p一直返回指定节点 if(--num==0) return q; else return p; } int main() { int n,temp; while(cin>>n)//数据节点个数 { ListNode* head=new ListNode({INT_MAX,NULL});//创建起始节点 ListNode* last=head;//建立尾指针,利用尾插法建立链表 for(int i=0;i<n;i++)//创建链表 { cin>>temp; ListNode* p=new ListNode({temp,NULL});//建立数据节点 last->m_pNext=p; last=last->m_pNext;//移动指针到最新结点 } cin>>n;//倒数第几个结点 ListNode* node=fun(head->m_pNext,n);//调用递归找到对应节点 cout<<node->m_nKey<<endl;; } } // 64 位输出请用 printf("%lld")