#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
typedef struct{
int data;
int next;
}SLNode;
typedef struct{
SLNode r[maxsize];
int length;
}SqList;
void sort(SqList &L){
int k=L.length;
L.r[0].next=1;
L.r[1].next=0;
int i,j,pre;
for(i=2;i<k;i++){
j=L.r[0].next;
if(L.r[i].data<L.r[j].data){
L.r[i].next=L.r[0].next;
L.r[0].next=i;
} else{
pre=j;
while(L.r[i].data>L.r[j].data&&j!=0){
pre=j;
j=L.r[j].next;
}
L.r[pre].next=i;
L.r[i].next=j;
}
}
}
int main(){
SqList L; //49 38 65 97 76 13 27 99
int i,j;
L.length=9;
L.r[0].data=-1;L.r[0].next=0;
for(i=1;i<=8;i++){
scanf("%d",&L.r[i].data);
}
sort(L);
for(i=0;i<9;i++){
printf("%d\t%d\t%d\n",i,L.r[i].data,L.r[i].next);
}
j=L.r[0].next;
for(i=0;i<8;i++){
printf("%d ",L.r[j].data);
j=L.r[j].next;
}
return 0;
}
输入:
49 38 65 97 76 13 27 99
输出
0 -1 6
1 49 3
2 38 1
3 65 5
4 97 8
5 76 4
6 13 7
7 27 2
8 99 0
13 27 38 49 65 76 97 99