单链表按k值重新排序
来源:互联网 发布:肿瘤的临床数据分析 编辑:程序博客网 时间:2024/06/06 04:58
单链表按k值重新排序
题目要求:
给定一链表头节点,节点值类型是整型。
现给一整数k,根据k将链表排序为小于k,等于k,大于k的一个链表。
对某部分内的节点顺序不做要求。
算法思路分析及代码(C)
思路:将链表分为小于k、等于k、大于k的三个链表,然后再合并。
链表结点定义:
typedef struct Node{ int data; struct Node* next;}node, *pNode;
算法代码:
pNode sortLinkedList(pNode head, int k){ pNode sHead = NULL;//小头 pNode sTail = NULL;//小尾 pNode eHead = NULL;//等头 pNode eTail = NULL;//等尾 pNode bHead = NULL;//大头 pNode bTail = NULL;//大尾 pNode temp = NULL; //拆分链表 while (head != NULL) { temp = head->next; head->next = NULL; if (head->data < k) { if (!sHead){ sHead = head; sTail = head; } else{ sTail->next = head; sTail = head; } } else if (head->data == k) { if (!eHead){ eHead = head; eTail = head; } else{ eTail->next = head; eTail = head; } } else { if (!bHead){ bHead = head; bTail = head; } else{ bTail->next = head; bTail = head; } } head = temp; } //合并链表 if (sTail) { sTail->next = eHead; eTail = (eTail == NULL ? sTail : eTail); } if (eTail) { eTail->next = bHead; } return sHead != NULL ? sHead : (eHead != NULL ? eHead : bHead);}
0 0
- 单链表按k值重新排序
- 中文搜索引擎重新排序
- Delphi DBGrid重新排序
- list重新排序
- 重新理清冒泡排序
- PHP 数组重新排序
- ios 拖动重新排序
- 无限分类---重新排序
- 重新排序一个序列
- 重新排序一个序列
- C# DATATABLE 重新排序
- excel重新排序
- 重新对DataTable排序
- C# Datatable排序重新排序
- XML 方法对SQL列表中的值进行重新排序
- 数组重新定义key值,去重,排序
- 请教重新排序的问题
- SQL标识列重新排序
- Python学习笔记
- sgi stl linux下编译运行
- BSG白山极客挑战赛-B君的圆锥(三分+数学)
- c++作业6
- Python improve performance
- 单链表按k值重新排序
- 多线程编程 - NSOperation
- java 数字的进制转换
- malloc()函数的实现原理和工作机制!!!!!!!
- [Android自定义View] 计算View尺寸方法onMeasure()
- 给大家推荐对Redis分析讲解比较详细的大牛
- yarn内存配置指南
- CSDN博客中插入图片的办法
- 类模板的写法