查找链表倒数第k个结点
#include <iostream>
using namespace std;
typedef struct ListNode{
int val;
ListNode* next;
ListNode():val(0),next(nullptr){}
ListNode(int x):val(x),next(nullptr){}
}ListNode,*LinkList;
LinkList TailInsert(int n){
ListNode* head = new ListNode;
ListNode* r = head;
for(int i = 0;i<n;i++){
int x;
cin>>x;
ListNode* p = new ListNode (x);
r->next = p;
r = p;
}
r->next = nullptr;
return head;
}
void find_k(LinkList L,int k){
ListNode* p = L->next;
ListNode* q = p;
while(q && k){
q = q->next;
k--;
}
if(k!=0) return ;
while(q){
p = p->next;
q = q->next;
}
cout<<p->val<<endl;
}
int main(){
int n;
while(cin>>n && (n!=0)){
LinkList L = TailInsert(n);
int k;
cin>>k;
find_k(L,k);
}
return 0;
}