链表排序
来源:互联网 发布:澳门导航软件 编辑:程序博客网 时间:2024/06/10 19:56
这里的链表排序其实比较简单,
就是从原链表中取出链首节点,
按照排序规则(从小到大)插入到新的链表中。
最后将链表的头指针指向新链表的头指针。
源代码:
ListNode.h
void Sort(); // 排序(从小到大)
ListNode.cpp
void MyList::Sort(){if (NULL == m_pHead || NULL == m_pHead->pNext)return;ListNode* pNewHead = NULL;// pCur, pNext指向原链表ListNode* pCur = NULL;ListNode* pNext = m_pHead;// 每次从原链表中取出链首指针// 插入到新链表中while (pNext != NULL){pCur = pNext;pNext = pNext->pNext;// 新链表为空时直接插入if (NULL == pNewHead){pCur->pNext = NULL;pNewHead = pCur;continue;}// 在新链表头插入if (pCur->nData < pNewHead->nData){pCur->pNext = pNewHead;pNewHead = pCur;continue;}// 在新链表中寻找合适位置插入ListNode* pNewCur = pNewHead->pNext;ListNode* pNewPrev = pNewHead;while (pNewCur != NULL && pNewCur->nData <= pCur->nData){pNewCur = pNewCur->pNext;pNewPrev = pNewPrev->pNext;}// 在新链表链尾插入if (NULL == pNewCur){pNewPrev->pNext = pCur;pCur->pNext = NULL;}else{pCur->pNext = pNewCur;pNewPrev->pNext = pCur;}}m_pHead = pNewHead;}
0 0
- 链表排序 归并排序
- 链表排序--选择排序
- 链表排序--快速排序
- 链表排序--归并排序
- 排序3:插入排序(普通插入排序 + 折半插入排序 + 链表插入排序 + 希尔排序)
- LIST排序, Struct排序, qsort排序, STL::LIST sort排序, 链表排序
- 单向链表排序:快速排序和归并排序
- 单向链表排序-归并排序
- 链表排序,使用插入排序,
- 链表排序-直接插入排序
- 链表的一种排序---冒泡排序
- c 链表排序 - 选择排序
- 链表排序之插入排序
- 插入排序进行链表排序
- 优化冒泡排序 & 链表选择排序
- 链表排序之选择排序
- 链表排序之冒泡排序
- 链表排序(归并排序)
- 一个简单的登陆界面
- ThinkPHP--模板与框架整合
- Web.xml配置详解之context-param
- C++字符串操作函数
- 图解Linux命令之--lsattr命令
- 链表排序
- 文件创建读取写入
- android 二维码,条形码生成与扫描识别
- java 集合介绍
- ThinkPHP--url地址大小写问题
- RadioButton kongleifeng深究
- DirectX11 XNA数学库之矩阵
- HTML5的canvas标签
- Linux网络编程---I/O多路复用 之 select