您的位置:首页 > 其它

leetcode147. Insertion Sort List

2017-10-09 20:42 363 查看

题目

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)
return NULL;
if(head->next == NULL)
return head;
ListNode* sortnode = new ListNode(-1);
sortnode->next = head;
ListNode* checknode = head->next;
head->next = NULL;
while(checknode)
{
ListNode* temp = sortnode->next;
ListNode* fnode = sortnode;
while(temp->val < checknode->val)
{
fnode = temp;
temp = temp->next;
if(temp == NULL)
break;
}
fnode->next = checknode;
ListNode* t = checknode->next;
checknode->next = temp;
checknode = t;
}
return sortnode->next;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode