您的位置:首页 > 其它

The Solution to LeetCode 147 Insertion Sort List

2017-02-26 17:50 579 查看
Question:
Sort a linked list using insertion sort.

思路:本题采用直接插入排序。
Answer:

/**
* 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) {
if(head==NULL)
{
return NULL;
}
else
{
ListNode* q = head->next;
head->next = NULL;
while(q!=NULL)
{
ListNode* p = head;
if(q->val < p->val)
{
head = q;
q=q->next;
head->next=p;
}
else
{
while(p!=NULL)
{
if(p->next ==NULL)
{
p->next =q;
q=q->next;
p->next->next = NULL;
break;
}
else
{
if(q->val < p->next->val)
{
ListNode* tmp = p->next;
p->next = q;
q=q->next;
p->next->next = tmp;
break;
}
p=p->next;
}
}
}
}
return head;
}
}
};
Run code results:
Your input

[3 2 3 6 1 8 3 0 4 2 5 6 1 13 9 15]

Your answer

[0,1,1,2,2,3,3,3,4,5,6,6,8,9,13,15]

Expected answer

[0,1,1,2,2,3,3,3,4,5,6,6,8,9,13,15]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: