#include<stdio.h>
#include<stdlib.h>
typedef struct {
int address
;
int data
;
int next
;
} Node
;
typedef Node
*PtrNode
;
void ArrayList(Node L
[], int N
, int first
);
void ReverseList(Node L
[], int N
, int K
);
void exchange(PtrNode a
, PtrNode b
);
int main() {
int first
,N
,K
,E
;
scanf("%d %d %d", &first
,&N
,&K
);
Node List
[N
];
for(int i
=0; i
<N
; i
++) {
scanf("%d %d %d",&List
[i
].address
,
&List
[i
].data
,&List
[i
].next
);
}
ArrayList(List
, N
, first
);
E
=1;
for(int i
=0; i
<N
; i
++) {
if(List
[i
].next
==-1) {
break;
} else {
E
++;
}
}
ReverseList(List
, E
, K
);
for(int i
=0; i
<E
-1; i
++) {
printf("d %d d\n", List
[i
].address
,
List
[i
].data
, List
[i
].next
);
}
printf("d %d -1\n", List
[E
-1].address
, List
[E
-1].data
);
return 0;
}
void ArrayList(Node L
[], int N
, int first
) {
for(int i
=0; i
<N
; i
++) {
if(L
[i
].address
==first
) {
exchange(&L
[0],&L
[i
]);
break;
}
}
for(int i
=0; i
<N
; i
++) {
for(int j
=i
+1; j
<N
; j
++) {
if(L
[i
].next
==L
[j
].address
) {
exchange(&L
[i
+1],&L
[j
]);
break;
} else if(L
[i
].next
==-1) {
return;
}
}
}
}
void ReverseList(Node L
[], int N
, int K
) {
for(int t
=0; t
<N
/K
; t
++) {
for(int i
=0; i
<K
/2; i
++) {
exchange(&L
[t
*K
+i
],&L
[t
*K
+K
-1-i
]);
}
}
for(int i
=0; i
<N
/K
*K
; i
++) {
L
[i
].next
=L
[i
+1].address
;
}
}
void exchange(PtrNode a
, PtrNode b
) {
Node c
;
c
=*a
;
*a
=*b
;
*b
=c
;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-31194.html