您的位置:首页 > 其它

LeetCode:Insertion Sort List

2014-11-21 10:34 423 查看
题目描述:

Sort a linked list using insertion sort.

思路:在head之前插入一个假头结点,便于在head节点之前插值。遍历链表,对于每一个节点,在它前面的有序的节点中找到第一个比它大的节点,将它插到该节点的前面。链表遍历结束后即得到有序链表。

代码:

ListNode * Solution::insertionSortList(ListNode *head)
{
if(head == NULL || head->next == NULL)
return head;
ListNode * fake_head = new ListNode(INT_MIN);
fake_head->next = head;
ListNode * left = head;
ListNode * right = head;
ListNode * left_pre = fake_head;
ListNode * right_pre = fake_head;
while(right != NULL)
{
left = fake_head->next;
left_pre = fake_head;
while(left != right)
{
if(left->val > right->val)
{
right_pre->next = right->next;
right->next = left;
left_pre->next = right;
right = right_pre->next;
break;
}
else
{
left = left->next;
left_pre = left_pre->next;
}
}
if(left == right)
{
right = right->next;
right_pre = right_pre->next;
}
}
return fake_head->next;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: