题解 | #输出单向链表中倒数第k个结点# 用尾插法与双指针
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
#include <iostream> using namespace std; //定义链表 struct ListNode{ int val; ListNode* next; ListNode(int x):val(x),next(nullptr){}; //初始化函数 }; int main() { int num,val; while(cin>>num){ //测试用例有多次输入 cin>>val; //使用尾插法建立链表 ListNode* head=new ListNode(val); //头结点 ListNode* p=head; //尾指针 for(int i=1;i<num;i++){ cin>>val; ListNode* q=new ListNode(val); //插入结点 p->next=q; //将上一结点与插入结点建立连接 p=q; //保持尾指针指向最后一个结点 } p->next=nullptr; //指向空 //使用双指针找倒数第k个数 int k; cin>>k; ListNode* fast=head,* slow=head; while(k--){ fast=fast->next; } while(fast!=nullptr){ fast=fast->next; slow=slow->next; } cout<<slow->val<<endl;; } return 0; } // 64 位输出请用 printf("%lld")