链表的排序
2015-10-10 13:54
155 查看
最近学习链表,想到链表的排序,网上找到各种资料,不过觉得都写的不是很清楚,于是就自己动手
对链表的排序主要有两种方法:
一:只交换节点中的元素,不改变链表的顺序。
二:直接交换节点,不改变节点中的元素。
第二种方法相对较复杂点,不过理解啦都很简单的,废话我不多说,把代码贴上相信大家就理解啦。。。
第一种:
第二种:
很简单的,不过,大家可以自行用其他高效排序算法实现。。。。
对链表的排序主要有两种方法:
一:只交换节点中的元素,不改变链表的顺序。
二:直接交换节点,不改变节点中的元素。
第二种方法相对较复杂点,不过理解啦都很简单的,废话我不多说,把代码贴上相信大家就理解啦。。。
第一种:
void LinkList_Sort(LinkList *head) { int a,t; LinkList *p,*q,*M; for(p=q=M=head;p->next!=NULL;p=p->next,M=q=p->next) { for(a=q->num;q!=NULL;q=q->next) { if(q->num < a) { M=q; a=q->num; } } if(p->next!=M) { t=p->next->num; p->next->num=M->num; M->num=t; } } }
第二种:
void LinkList_Sort( LinkList *head ) { LinkList *p, *prep, *temp, *tail; for(tail = NULL; head->next !=tail ;tail = p ) { for( p = head->next,prep = head;p->next != tail ;p = p->next,prep = prep->next) { if( p->num > p->next->num ) { temp = p->next; prep->next = p->next; p->next = p->next->next; prep->next->next = p; p = temp; } } } }
很简单的,不过,大家可以自行用其他高效排序算法实现。。。。
相关文章推荐
- 如何进行有效地表达
- 左右移动线条
- SQL注入——如何防御(一)
- html的input输入框提示信息 点击隐藏
- How to change hostname on SLE
- Zend Studio 12 安装 Aptana报错解决办法
- LeetCode:Single Number
- ViewPager的PagerAdapter不可以更新数据
- linux 下利用ls grep 和正则表达式实现目录和文件的分开显示
- facadez模式
- 曹政解密中国互联网
- 如何使用git工作(更新中)
- 技术简历的七要七不要
- 大整数加减 加减运算
- srm 549
- 四倍经验:2010年省队选拔赛山东——大陆争霸
- 三个实例演示 Java Thread Dump 日志分析
- MYSQL 源代码编绎脚本
- Hadoop-调优剖析
- Android完美解决输入框EditText隐藏密码打勾显示密码问题