问题:
用插入排序对链表排序
样例
样例 1:
输入: 0->null
输出: 0->null
样例 2:
输入: 1->3->2->0->null
输出 :0->1->2->3->null
python:
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param head: The first node of linked list.
@return: The head of linked list.
"""
def insertionSortList(self, head):
# write your code here
if head == None or head.next == None:
return head
result = ListNode(0)
while head != None:
curNode = result
while curNode.next != None and head.val > curNode.next.val:
curNode = curNode.next
temp = head.next
head.next = curNode.next
curNode.next = head
head = temp
return result.next
C++:
/**
* Definition of singly-linked-list:
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The head of linked list.
*/
ListNode * insertionSortList(ListNode * head) {
// write your code here
if(head == NULL || head->next == NULL)
{
return head;
}
ListNode *result = new ListNode(0);
while(head != NULL)
{
ListNode *curNode = result;
while(curNode->next != NULL && head->val >= curNode->next->val)
{
curNode = curNode->next;
}
ListNode *tempNode = head->next;
head->next = curNode->next;
curNode->next = head;
head = tempNode;
}
return result->next;
}
};