leedcode——链表插入排序
2017-03-22 16:34
246 查看
题目:Sort a linked list using insertion sort.
思路:定义一个临时链表存放已排序好的链表,将未排序好的节点依次插入。
链表元素:1,3,8,4,6,5,2
(递归到最后一个节点2)
第一轮:temp链表元素为2,head 为5,操作:将5插入到2后面
第二轮:temp链表元素为2,5,head为6,操作:将6插入到5后面
第三轮:temp链表元素为2,5,6,head为4,操作:将4插入到2后面
...
最后一轮:temp链表元素为1,2,3,4,5,6,8
代码:
class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
if(head == NULL || head->next == NULL) return head;//空链表或只有一个头结点的链表直接返回
ListNode *temp = new ListNode(0);//定义一个临时链表
ListNode *p = temp;
4000
temp->next = insertionSortList(head->next);//递归将已排序好的链表插入临时链表
while(p != NULL && p->next != NULL && head->val > p->next->val){//为head找一个合适的位置
p = p->next;
}
head->next = p->next;//插入head元素
p->next = head;
return temp->next;//返回临时链表
}
};
思路:定义一个临时链表存放已排序好的链表,将未排序好的节点依次插入。
链表元素:1,3,8,4,6,5,2
(递归到最后一个节点2)
第一轮:temp链表元素为2,head 为5,操作:将5插入到2后面
第二轮:temp链表元素为2,5,head为6,操作:将6插入到5后面
第三轮:temp链表元素为2,5,6,head为4,操作:将4插入到2后面
...
最后一轮:temp链表元素为1,2,3,4,5,6,8
代码:
class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
if(head == NULL || head->next == NULL) return head;//空链表或只有一个头结点的链表直接返回
ListNode *temp = new ListNode(0);//定义一个临时链表
ListNode *p = temp;
4000
temp->next = insertionSortList(head->next);//递归将已排序好的链表插入临时链表
while(p != NULL && p->next != NULL && head->val > p->next->val){//为head找一个合适的位置
p = p->next;
}
head->next = p->next;//插入head元素
p->next = head;
return temp->next;//返回临时链表
}
};
相关文章推荐
- lintcode-173-链表插入排序
- lintcode :链表插入排序
- Lintcode——链表插入排序
- lintcode 173 单链表插入排序 python
- LintCode 链表插入排序
- 【回忆c语言】从指针的定义初始化到链表的插入删除排序实现code
- 链表插入排序
- 链表操作:创建,插入,排序,反转
- 什么是单链表插入排序?
- Insertion Sort List 链表插入排序
- 链表排序:冒泡和插入
- [LeetCode] Insertion Sort List 链表插入排序
- C语言链表插入排序
- 链表插入排序
- 链表插入排序
- LintCode 删除排序链表中的重复数字 II
- lintcode 173 链表插入排序
- 链表插入排序
- 链表排序(冒泡、插入、归并和快排)
- 单链表很全的例子,插入,删除,,查找,排序