题意:每个k个链表元素反转,不足k个不反转,输出全部反转后的结果
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int st,n,m;
cin>>st>>n>>m;
int data[100000],next[100000],list[100000];
for(int i=0; i<n; ++i) {
int temp;
cin>>temp;
cin>>data[temp]>>next[temp];
}
int count=0;//坑。不是所有的数据都有效
while(st!=-1) {
list[count++]=st;
st=next[st];
}
for(int i=0; i<count-count%m; i+=m)
reverse(list+i,list+i+m);
for(int i=0; i<count-1; ++i)
printf("%05d %d %05d\n",list[i],data[list[i]],list[i+1]);
printf("%05d %d -1",list[count-1],data[list[count-1]]);
return 0;
}