单链表(五)——链表的排序
2015-09-13 10:00
211 查看
/********************************************************************* * 函数名称:linklist *SortLinklist(linklist *head) * 函数功能:链表排序 * 参 数:head----链表的头结点 * 返 回 值:按从小到大的顺序排序后的链表头结点 * 说 明:冒泡排序方法 *********************************************************************/ linklist *SortLinklist(linklist *head) { linklist *tp=head, *pretp, *temp; if(head==NULL ||head->next==NULL) return head; while(1) { int flag=0; // 标志位,当某趟排序没发生交换时,flag=0,此时说明排序完成 tp = head->next; // 将tp指针恢复,准备进行下一趟排序 pretp = head; // 将pretp指针恢复,准备进行下一趟排序 while(tp->next!=NULL) { if(pretp->next->data > tp->next->data) // 如果链表前一个节点的值大于后一个结点的值,则交换两结点 { temp = tp->next; tp->next = temp->next; temp->next = pretp->next; pretp->next = temp; flag = 1; // 如果发生交换,置标志位为1 } pretp = pretp->next; // 将pretp指针前进一个结点 tp = pretp->next; // 将tp指针前进一个结点 } if(flag==0) // 如果某趟排序没发生交换时,flag=0,此时说明排序完成,返回头结点 return head; } }
相关文章推荐
- 好玩的东西——一个代码片段
- LeetCode (45) Jump Game II
- HTTP缓存相关头
- 几种算法思想
- CCF 最优配餐【暴力BFS】
- 另类过滤外国浏览者
- centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课
- 计算两个GPS坐标的距离方法 - Java语言
- ios-清除本地缓存(三种方式)
- Iterator抽取迭代基类/Memento抽取备忘管理类/Interpreter终结非终结解释
- 单链表(四)——链表的反转
- java 集装箱 arraylist 用法
- 常见linux命令释义(第六天)——shell环境变量
- Strut2常规配置属性
- IOS之Core Foundation框架和Cocoa Foundation框架区别
- LeetCode----House Robber
- 个人学习笔记---linux内核同步办法的选择
- JVM内存管理深入垃圾收集器与内存分配策略
- 单链表(三)——链表的删除
- linux 系统编程1