首页 > 代码库 > [LeetCode]147.Insertion Sort List
[LeetCode]147.Insertion Sort List
【题目】
Sort a linked list using insertion sort.
【分析】
无
【代码】
/********************************* * 日期:2015-01-09 * 作者:SJF0115 * 题目: 147.Insertion Sort List * 来源:https://oj.leetcode.com/problems/insertion-sort-list/ * 结果:AC * 来源:LeetCode * 博客: **********************************/ #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 == NULL){ return NULL; }//if // 添加头结点 ListNode *dunny = new ListNode(-1); ListNode *p = dunny; ListNode *cur = head; // cur从第二个元素开始遍历 cur指向第一个未排序元素 while(cur){ // cur要跟之前每个元素进行比较,直到找到正确位置 p = dunny; // 比较 while(p->next != NULL && p->next->val < cur->val){ p = p->next; }//while // 记录未排序的第一个元素 ListNode *nextNode = cur->next; // cur放到相应的位置 cur->next = p->next; p->next = cur; // 修改cur指针 指向未排序的第一个元素 cur = nextNode; }//while return dunny->next; } }; // 创建链表 ListNode* CreateList(int A[],int n){ ListNode *head = NULL; if(n <= 0){ return head; }//if head = new ListNode(A[0]); ListNode *p1 = head; for(int i = 1;i < n;i++){ ListNode *node = new ListNode(A[i]); p1->next = node; p1 = node; }//for return head; } int main() { Solution solution; int A[] = {5,12,3,10,11,8}; ListNode *list = CreateList(A,6); ListNode *head = solution.insertionSortList(list); // 输出 ListNode *p = head; while(p){ cout<<p->val<<" "; p = p->next; }//while cout<<endl; }
[LeetCode]147.Insertion Sort List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。