Insertion Sort List
Sort a linked list using insertion sort.
指针的初始值设置有问题,梁旭两天童颜的错误了。
/**
* 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 || head->next == NULL)return head;
ListNode * guide = new ListNode(0);
guide->next = head;
ListNode * temp = head->next;
ListNode * temp_pre = head;
while(temp != NULL)
{
int temp_val = temp->val;
ListNode * p = guide->next;
ListNode * p_pre = guide;
while(temp_val > p->val && p != temp)
{
p = p->next;
p_pre =p_pre->next;
}
if(p == temp)
{
temp =temp->next;
temp_pre = temp_pre->next;
continue;
}
else
{
temp_pre ->next =temp->next;
p_pre->next =temp;
temp->next = p;
temp = temp_pre->next;
//return guide->next;
}
}
return guide->next;
}
};
posted on 2014-03-25 16:37 pengyu2003 阅读(93) 评论(0) 收藏 举报
浙公网安备 33010602011771号