链表的排序

链表可以用多种方式去排序,但是链表就只有那么几种:

    (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.希望大家能写出比较高效的代码,勤思考,多动脑。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值