您的位置:首页 > 其它

和大神们学习每天一题(leetcode)-Insertion Sort List

2014-12-09 17:29 204 查看
Sort a linked list using insertion sort.

本题采用的是新建一个头结点,向新建的头结点中插入新的元素

功能测试用例:{ 0, 2, 5, 3, 6, 10}

特殊输入测试用例:NULL, {0}

class Solution
{
public:
ListNode *insertionSortList(ListNode *head)
{
if (head == NULL || head->next == NULL)
return head;
ListNode *LNpPoint1, *LNpPoint2, *LNpHead = (ListNode *)malloc(sizeof(ListNode));//在头结点前加一个结点
LNpHead->next = head;
head = head->next;
LNpHead->next->next = NULL;
while (head != NULL)//遍历所有结点
{
LNpPoint1 = LNpHead;//初始化双结点
LNpPoint2 = LNpHead->next;
while (LNpPoint2 != NULL)//在排好的链表中找到正确的位置
{
if (LNpPoint2->val > head->val)
{
LNpPoint1->next = head;
head = head->next;
LNpPoint1->next->next = LNpPoint2;
break;
}
LNpPoint1 = LNpPoint1->next;//双链表向后移动
LNpPoint2 = LNpPoint2->next;
}
if (LNpPoint2 == NULL)
{
LNpPoint1->next = head;
head = head->next;
LNpPoint1->next->next = NULL;
}
}
return LNpHead->next;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: