您的位置:首页 > 其它

leetcode. Insertion Sort List

2014-12-03 22:27 162 查看
Sort a linked list using insertion sort.

链表的插入排序,算法可参看数组插入排序,不同之处在于查找插入点时,链表要从前往后查找。

代码如下:

ListNode *insertionSortList(ListNode *head)
{
ListNode *dummy = new ListNode(INT_MIN), *p, *q, *r;
ListNode *new_head;
dummy->next = head;

p = dummy->next;
while (p != NULL)
{
q = p->next;
if (q == NULL)
break;
for (r = dummy; r->next != q; r = r->next)
{
if (q->val <= r->next->val)
break;
}
if (r->next == q)
{
p = p->next;
continue;
}
p->next = q->next;
q->next = r->next;
r->next = q;
}

new_head = dummy->next;
delete dummy;
return new_head;
}


注意点:

1、使用dummy节点以方便操作

2、当q需要插入到p之前的节点时,p已经指向下一个节点,不需要再使用p = p->next
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: