#include<cstdio>
#include<iostream>
#define MAXN 10005
int max_index,head;
int data[MAXN];
int nxt[MAXN];
int main(){
int p;
max_index = 0; head = max_index;
p = ++max_index;
data[p] = 1000 + p;
nxt[p] = head;
head = p;
p = ++max_index;
data[p] = 1000 + p;
nxt[p] = head;
head = p;
if(head != 0) {
int endp = 0;
for( p=head; p != 0; p = nxt[p] ) {
endp = p;
}
p = ++max_index;
data[p] = 1000 + p;
nxt[p] = 0;
nxt[endp] = p;
}
if(head != 0) {
int midp = 0;
for( p=head; p != 0; p = nxt[p] ) {
if( data[p] == 1001 ) {
midp = p;
break;
}
}
p = ++max_index;
data[p] = 1000 + p;
nxt[p] = nxt[midp];
nxt[midp] = p;
}
printf("max_index=%d, head=%d\n",max_index, head);
for( p=head; p != 0; p = nxt[p] ) {
printf("p=%3d, data=%5d, next=%3d\n", p, data[p], nxt[p]);
}
if(head != 0) {
int midp = 0, premidp = 0;
for( p=head; p != 0; p = nxt[p] ) {
premidp = midp;
midp = p;
if( data[p] == 1001 ) {
break;
}
}
nxt[premidp] = nxt[midp];
}
printf("=========================================================\n");
printf("max_index=%d, head=%d\n",max_index, head);
for( p=head; p != 0; p = nxt[p] ) {
printf("p=%3d, data=%5d, next=%3d\n", p, data[p], nxt[p]);
}
return 0;
}