147. 对链表进行插入排序

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/insertion-sort-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路:遍历当前的链表,当前节点的值,之后每次都从结果链表中从头遍历,知道后一个节点的值大于当前节点。在链表中删除节点。添加到结果链表中。

    public ListNode insertionSortList(ListNode head) {
        // 结果链表
        ListNode dummyHead = new ListNode(-1);

  
        ListNode cur = head;

        while(cur != null) {
            // 每次都从结果链表中,从头开始找
            ListNode prev = dummyHead;

            while(prev != null && prev.next != null && prev.next.val < cur.val) {
                prev = prev.next;
            }
            
            // 当前节点,之后移动到下一次需要处理的节点
            ListNode node = cur;
            cur = cur.next;
            // 删除链表中的节点。加入到结果链表中。
            node.next = null;
            node.next = prev.next;
            prev.next = node;
        }
        return dummyHead.next;
    }
posted @ 2022-02-25 20:45  一颗青菜  阅读(2)  评论(0)    收藏  举报