链表可以用多种方式去排序,但是链表就只有那么几种:
(1)插入排序 (适合)
(2)冒泡排序 (适合)
(3)希尔排序 (适合)
(4)选择排序 (适合)
(5)快速排序 (不适合)
(6)合并排序 (不适合)
(7)基数排序 (不适合)
(8)堆排序 (不适合)
这里只写链表的插入算法的排序,性能比较优
void *Sort(Snode *head){
head *pre,curr,*p,*q;
p=head->next;
head->neaxt=NULL;//断开头结点
while(p!=NULL){
pre=head;
curr=pread->next;
if(curr!=NULL&&curr->data<p->data){
pre=curr;
curr=curr->next;
}//比较节点大小,但是注意首次比较不执行哦,同学们仔细阅读代码啊
q=p;
p=p->next;
q->next=pre->next;//吼吼,开始插入节点喽
pre->next=q;
}
}
PS:代码实际非常简单,本人极不喜欢冒泡插入,如果我是面试官,这道题有人用冒泡,OK,pass.希望大家能写出比较高效的代码,勤思考,多动脑。