这是单链表插入排序的函数,参数为单链表头指针(该链表是带头的链表)。
int
33 Insert_Sort ( Node P )34 {
35 Node Tmp_S,Tmp_D,Tmp;
36 int i = 1, j;
37
38 if( P == NULL )
39 return 0;
40
41 printf ( "insert sort\n" );
42 for(Tmp_S = P->Next; Tmp_S->Next != NULL; i++, j = 0) {
43 for (Tmp_D = P, j = i ;
44 j == 0 ? (Tmp_S = Tmp_S->Next) == NULL:1;
45 Tmp_D = Tmp_D->Next, j-- ){
46 if( Tmp_S->Next->Data < Tmp_D->Next->Data ) {
47 Tmp = Tmp_S->Next;
48 Tmp_S->Next = Tmp->Next;
49 Tmp->Next = Tmp_D->Next;
50 Tmp_D->Next = Tmp;
51 break;
52 }
53 }
54 }
55
56 printf ( "exit sort\n" );
57 return 0;
58 }
59