Given 1->3->2->0->null
, return 0->1->2->3->null
解题思路:就是建立一个新的链表,先将所给链表的一个节点放到新链表里,这个新链表就有可以比较的节点了,用给定的链表依次和新链表的节点比较,值比新链表的节点值大就插在后面,小就插在前面,这样新的链表就是一个有序链表了。
实现代码:class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
// write your code here
ListNode *dummy=new ListNode(0);
while(head!=NULL){
ListNode *node=dummy;
while (node->next!=NULL&&node->next->val<head->val) {
node=node->next;
}
ListNode *temp=head->next;
head->next=node->next;
node->next=head;
head=temp;
}
return dummy->next;
}
};
感悟:老师上课讲的题目,原本是java写的,改成了c++,一开始没看懂,后来自己想了想,原来是先建一个新链表然后向里面插元素就可以了。