Sort a linked list using insertion sort.
Subscribe to see which companies asked this question.
这是对链表进行排序,采取的方法是当遍历到前个节点的数值要大于后一个节点的数值的时候,使前一节点指向后一节点的后一节点,同时从root开始遍历到后一节点,这时候使后一节点指向前一节点,root的后一节点为上述的后一节点,具体代码如下:
public ListNode insertionSortList(ListNode head){
if (head==null||head.next==null) return head;
ListNode root=new ListNode(0);
root.next=head;
ListNode p=head;
ListNode q,r;
while (p!=null&&p.next!=null) {
if (p.val<=p.next.val) {
p=p.next;
}else {
q=p.next;
p.next=q.next;
r=root;
while (r.next.val<=q.val) {
r=r.next;
}
q.next=r.next;
r.next=q;
}
}
return root.next;
}