链表排序
来源:互联网 发布:java byte赋值0xff 编辑:程序博客网 时间:2024/06/05 19:38
链表排序
链表排序也类似于数组等容器的排序,在这里我们使用选择排序法,当然其他的方法也是同样的道理.
//选择排序法 ----只给出主要代码class LinkList {private:int m_iData;string m_strName;LinkList * m_pNode;public:bool IsEmpty();void Sort(SortType type)};void LinkList::Sort(SortType type)//使用枚举类型 选择排序的方式{if (IsEmpty())//判断是否空return;LinkList *big = NULL, *next=NULL, *node=this,*pos=NULL;//与数组不同的是链表排序要多次改变指针域,并且我们还必须获得前后结点地址.while(node->m_pNode->m_pNode!=NULL){ big = next = node->m_pNode;//这样后一步复制使得big 和next 指向当前结点的前一个结点.while (next->m_pNode != NULL){switch (type) {case SortByNumber:if (big->m_iData >next->m_pNode->m_iData)//每次内循环获得值最小的结点,下同.{pos = next;big = next->m_pNode;}break;case SortByName: if(big->m_strName>next->m_pNode->m_strName){pos = next;big = next->m_pNode;}break;}next = next->m_pNode;}if (big != node->m_pNode){//<span style="color:#ff0000;">核心部分</span>:获取到最大值的结点后和每次循环的第一个结点交换位置.<span style="font-size:14px;">pos->m_pNode = big->m_pNode;big->m_pNode = node->m_pNode;node->m_pNode = big;</span>}node = node->m_pNode;}}
0 0
- 链表排序 归并排序
- 链表排序--选择排序
- 链表排序--快速排序
- 链表排序--归并排序
- 排序3:插入排序(普通插入排序 + 折半插入排序 + 链表插入排序 + 希尔排序)
- LIST排序, Struct排序, qsort排序, STL::LIST sort排序, 链表排序
- 单向链表排序:快速排序和归并排序
- 单向链表排序-归并排序
- 链表排序,使用插入排序,
- 链表排序-直接插入排序
- 链表的一种排序---冒泡排序
- c 链表排序 - 选择排序
- 链表排序之插入排序
- 插入排序进行链表排序
- 优化冒泡排序 & 链表选择排序
- 链表排序之选择排序
- 链表排序之冒泡排序
- 链表排序(归并排序)
- 关于SPI的隔离
- 从无头单链表中删除节点
- 15 款很棒的文本编辑器
- 杭州电子科技大学(HDU)ACM 刷题----------字符串之2026
- django的模版标签和过滤器
- 链表排序
- 单例模式的优缺点
- 交叉墒
- nyoj1237
- 算法系列笔记7(有关图的算法一—搜索,拓扑排序和强连通分支)
- Go语言的类型结构
- Mybatis接口映射,嵌套查询
- HDU 3879 Base Station 最小割
- 求助:python中深拷贝和浅拷贝的一道题目