int main(int argc, const char *argv[])
{
linklist H;
int a[] = {1,5,9,4,11,96,10,6,75};
int i;
H = list_create(); //建立新链表
if (H == NULL)
return -1;
for (i = 0;i < sizeof(a)/sizeof(int); i+
list_tail_insert(H,a[i]); //建立新节点、尾部插入
}
list_show(H); //遍历链表
printf("sort:\n");
list_sort(H);//排序
list_show(H);
list_free(H);
return 0;
3 }
int list_sort(linklist H){
linklist p,q,r;
if (H == NULL){
printf("H is NULL\n");
return -1;
}
if (H->next == NULL)
return 0;
//赋值
p = H->next;
q = H->next->next;
r = H;
H->next = NULL;
//插入第一个节点
p->next = H->next;
H->next = p;
//与已插入节点比较、并按大小插入
while(q){
p = q;
q = q->next;
r = H;
while (r->next){
if (r->next->data < p->data){
r = r->next;
}else{
break;
}
}
p->next = r->next;
r->next = p;
}
return 0;
}