147. 对链表进行插入排序
作者:互联网
package leetcode; public class demo_147 { public ListNode insertionSortList(ListNode head) { //最多有一个节点的链表直接返回 if(head==null||head.next==null) { return head; } ListNode dummyNode=new ListNode(); dummyNode.next=head; ListNode pre; //lastNode为有序链表的最后一个元素 ListNode lastNode=head; ListNode cur=lastNode.next; while(cur!=null) { //当前元素比有序链表所有值都大 if(lastNode.val<=cur.val) { lastNode=lastNode.next; } else { pre=dummyNode; //找出当前元素在有序链表中应该插入位置的上一个元素 while(pre.next.val<cur.val) { pre=pre.next; } //删除当前元素 lastNode.next=cur.next; //在有序链表中插入当前元素 cur.next=pre.next; pre.next=cur; } cur=lastNode.next; } return dummyNode.next; } }
标签:147,head,ListNode,插入排序,lastNode,next,链表,null 来源: https://www.cnblogs.com/Yshun/p/16110912.html