博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Insertion Sorted List】cpp
阅读量:6086 次
发布时间:2019-06-20

本文共 2378 字,大约阅读时间需要 7 分钟。

题目:

Sort a linked list using insertion sort.

代码:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* insertionSortList(ListNode* head) {            ListNode *p1 = head;            ListNode dummy(INT_MIN);            while (p1)            {                ListNode *tmp1 = p1->next;                ListNode *p2 = &dummy;                while ( p2->next )                {                    if ( p2->next->val > p1->val )                    {                        ListNode *tmp2 = p2->next;                        p2->next = p1;                        p1->next = tmp2;                        break;                    }                    else                    {                        p2 = p2->next;                    }                }                if (!p2->next)                 {                    p2->next = p1;                    p1->next = NULL;                }                 p1 = tmp1;            }            return dummy.next;    }};

tips:

插入排序算法在链表上的实现。

1. 设立一个虚表头dummy,虚表头后面接的就是已经排序好的部分ListNodes

2. 维护一个指针p1,始终指向待插入的ListNode

3. 里层的while循环需要选择插入的具体位置

=============================================

第二次过这道题,一次AC。

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* insertionSortList(ListNode* head) {            ListNode dummpy(INT_MIN);            while ( head )            {                ListNode* tmp = head->next;                ListNode* pre = &dummpy;                ListNode* curr = dummpy.next;                while ( curr )                {                    if ( head->val
val) { pre->next = head; head->next = curr; break; } else { pre = curr; curr = curr->next; } } if ( !curr ) { pre->next = head; head->next = NULL; } head = tmp; } return dummpy.next; }};

 

转载于:https://www.cnblogs.com/xbf9xbf/p/4512942.html

你可能感兴趣的文章
批量文件重命名工具
查看>>
简单说一下UWP中的JumpList
查看>>
unity将object[]或者string对象转换成枚举enum
查看>>
以太坊系列之六: p2p模块--以太坊源码学习
查看>>
使用scikit-learn解决文本多分类问题(附python演练)
查看>>
2018 年最值得关注的 JavaScript 趋势
查看>>
什么是区块链?超级账本 Brian Behlendorf 从五个方面教你认识
查看>>
Linux中的帮助功能
查看>>
针对Android的Pegasus恶意软件版本和针对iOS的有什么不同?
查看>>
全局探色器
查看>>
Hive Export和Import介绍及操作示例
查看>>
http://mongoexplorer.com/ 一个不错的 mongodb 客户端工具。。。
查看>>
Xcode 4.3 使用xcodebuild命令编译项目环境设置
查看>>
上传jar包到nexus私服
查看>>
Why Namespace? - 每天5分钟玩转 OpenStack(102)
查看>>
Project:如何分析项目中的资源分配情况
查看>>
HDU 4803 Poor Warehouse Keeper (贪心+避开精度)
查看>>
小错误汇总
查看>>
Spring源码系列 — Envoriment组件
查看>>
java正则表达式去除html标签,Java中正则表达式去除html标签
查看>>