题意:给定链表上的每个节点信息,要求连续K的结点翻转,并输出最后翻转后的结果
tip:模拟+reverse
#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;
}