package 复试;
import java.util.*;
class node{
int address;
int data;
int next;
node(int address,int data,int next){
this.address=address;
this.data=data;
this.next=next;
}
}
public class 链表反k{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int firstaddress=sc.nextInt();
int n=sc.nextInt();
int k=sc.nextInt();
node nodes[]=new node[100000];
for(int i=0;i<n;i++){
int address=sc.nextInt();
int data=sc.nextInt();
int next=sc.nextInt();
nodes[address]=new node(address,data,next);
}
List<node> lst=new ArrayList<>();
while(firstaddress!=-1){
lst.add(nodes[firstaddress]);
firstaddress=nodes[firstaddress].next;
}
int num=n/k;
//可以进行num次反转,交换位置,不交换值
int count=0;
int tempi=0;
while(count<num){
revers(lst,tempi,k);
tempi+=k;
k=tempi+k;
count++;
}
for(int i=0;i<n-1;i++){
System.out.printf("%05d %d %05d\n",lst.get(i).address,lst.get(i).data,lst.get(i+1).address);
}
System.out.printf("%05d %d %d\n",lst.get(n-1).address,lst.get(n-1).data,-1);
}
public static void revers(List<node> lst,int tempi,int k){
int kk=k;
for(int i=tempi;i<kk/2;i++,k--){
node temp=lst.get(i);
lst.set(i, lst.get(k-1));
lst.set(k-1,temp);
}
}
没有满分。