您的位置:首页 > 其它

leetcode Insertion Sort List(链表插入排序)

2014-04-02 11:14 543 查看
题目大意:

对一个单向链表进行插入排序。

c++代码:

class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
if(head == NULL || head->next == NULL)
return head;
ListNode* begin = head;
ListNode* pre = head;
ListNode* cur = head->next;
begin->next = NULL;

ListNode* insert_pos = begin;

while(cur != NULL)
{
pre = begin;
insert_pos = begin;
//find the insert position
while(insert_pos != NULL)
{
if(insert_pos->val > cur->val)
break;
pre = insert_pos;
insert_pos = insert_pos->next;
}
//tmp is the node which will insert to sort list
ListNode* tmp = cur;
cur = cur->next;
//if it is the end of the sort list
if(insert_pos == NULL)
{
pre->next =tmp;
pre->next->next = NULL;
}
else
{
//if the sort list just have one node
if(insert_pos == pre)
{
tmp->next = insert_pos;
begin = tmp;
}
else// the postion is in the middle of sort list
{
pre->next = tmp;
tmp->next = insert_pos;
}
}
}
return head = begin;//reset head pointer to begin
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: