链表的排序

原创 2015年07月09日 11:27:14

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

    (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.希望大家能写出比较高效的代码,勤思考,多动脑。

相关文章推荐

单链表快速排序

  • 2017年11月03日 09:36
  • 3KB
  • 下载

java单向链表排序,倒置,合并

  • 2017年09月25日 11:18
  • 3KB
  • 下载

【数据结构】 单链表的基本操作+反转+选择/直接插入/冒泡3种排序

单链表操作

链表创建排序查找删除

  • 2013年12月01日 16:31
  • 4KB
  • 下载

排序树 双向 循环链表

  • 2014年08月31日 22:25
  • 3KB
  • 下载

【二叉树】将二叉搜索树转换成一个排序的双向链表

问题描述输入一棵二叉搜索树,将该二叉搜索树转换程一个排序的双向链表。 要求不能创建任何新的节点,只能调整树中节点指针的指向。 也就是left当prev,right当next。–中序线索化的变型。 ...

单链表排序和多项式分解

  • 2012年07月18日 21:50
  • 3KB
  • 下载

单链表排序(插入与归并)

struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }...

链表排序 C 语言代码

  • 2012年05月22日 16:26
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:链表的排序
举报原因:
原因补充:

(最多只允许输入30个字)