单链表插入排序
来源:互联网 发布:气象数据 英文缩写 编辑:程序博客网 时间:2024/06/10 12:51
单链表插入排序算法基本思想是构建一个新的有序链表头结点,并将原来的链表节点依次插入到新建的有序链表中。代码如下:
#include "stdafx.h"#include <iostream>using namespace std;struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};class Solution {public:ListNode *insertionSortList(ListNode *head) {if(head==nullptr || head->next==nullptr)return head;ListNode *pTemp1,*pTemp2,*pTemp2Pre;ListNode Result(INT_MIN);for(pTemp1=head;pTemp1!=nullptr;){for(pTemp2=&Result;pTemp2!=nullptr && pTemp2->val<=pTemp1->val; pTemp2Pre=pTemp2,pTemp2=pTemp2->next){;}ListNode *TmpNext=pTemp1->next;pTemp1->next=pTemp2Pre->next;pTemp2Pre->next=pTemp1;pTemp1=TmpNext;}return Result.next;}};int _tmain(int argc, _TCHAR* argv[]){struct ListNode head(-1);int inputNodeNum=0;struct ListNode *pHead=&head;Solution sln;while (cin>>inputNodeNum){int valTmp=0;for (int i=0;i<inputNodeNum;++i){cin>>valTmp;pHead->next=new struct ListNode(valTmp);pHead=pHead->next;}struct ListNode* pResult=sln.insertionSortList(head.next);struct ListNode* pTmpResult=pResult;while(pTmpResult!=nullptr){cout<<pTmpResult->val<<" ";pTmpResult=pTmpResult->next;}while(pResult!=nullptr){pTmpResult=pResult;pResult=pResult->next;delete pTmpResult;}}return 0;}
0 0
- 排序之单链表插入排序
- 单链表插入排序
- 单链表实现插入排序
- 插入排序(单链表)
- 单链表插入排序
- 单链表插入排序
- 实现单链表插入排序
- 单链表的插入排序
- 单链表直接插入排序
- 单链表插入排序算法
- [leetcode]单链表插入排序
- 单链表的插入排序
- 单链表实现插入排序
- 单链表---直接插入排序
- 单链表插入排序
- 单链表实现插入排序
- 单链表插入删除排序
- 单链表的插入排序
- 【例题】【图论&DP(状压)】NKOJ 1905 慢跑小路 【S2状态压缩】
- 当dex分包遇上NoClassDefFoundError&ClassNotFoundException
- Android 中把 资源id 转换为URi
- 最长公共子序列
- css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
- 单链表插入排序
- ddd
- myeclipse struts环境搭建
- 利用jsonrpc技术包装uiautomator
- Java 多线程的详解
- 新的管理门户 ibiza 中管理azure redis
- jQuery学习<六> — — Dom元素的特性(attribute)和属性(property)
- C++的数值归并代码
- Android异步操作AsyncTask学习