下面代码主要实现输出指针中倒数k个链表
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
int len,i,j;
ListNode* head=pListHead;
queue<ListNode*>que;
while (!que.empty())
que.pop();
if (head==NULL)
return NULL;
head=head->next;
while (head!=NULL){
if (que.size()==k)
que.pop();
que.push(head);
head = head->next;
}
if (que.size()!=k)
return NULL;
return que.front();
}
};
int main(){
vector<int> v;
int i,j,n,tmp,k;
ListNode* p, *head=p,*h=p;
while (cin>>n>>k){
v.clear();
for (i=0;i<n;i++){
cin>>tmp;
p->next = new ListNode(tmp);
//if (head==NULL)
// h=head=p;
//cout<<tmp<<' '<<p->val<<endl;
p=p->next;
}
Solution s=Solution();
ListNode *res=s.FindKthToTail(head,k);
if (res==NULL)
cout<<"NULL";
else
cout<<res->val<<endl;
while (res){
cout<<res->val<<' ';
res = res->next;
}
}
return 0;
}