题目:链表插入排序
样例:Given 1->3->2->0->null,return 0->1->2->3->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
ListNode *dummy=new ListNode(0);
while(head!=NULL)
{
ListNode *p=dummy;
while(p->next!=NULL&&p->next->val<head->val)
{
p=p->next;
}
ListNode *q=head->next;
head->next=p->next;
p->next=head;
head=q;
}
return dummy->next;
}
};
感想:逐一进行判断时,如果新的节点比判断节点的next大,判断节点位置的指针后移,再进行判断。如果比它小,插在判断节点的后面。依次插入整条链表。