链表的插入排序

链表的插入排序

http://www.nowcoder.com/questionTerminal/152bc6c5b14149e49bf5d8c46f53152b

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode insertionSortList (ListNode head) {
        // write code here
        if(head == null || head.next == null) return head;
        ListNode node = new ListNode(head.val);
        ListNode headNext = insertionSortList(head.next);

        if(node.val <= headNext.val){
            node.next = headNext;
            return node;
        }

        ListNode cur = headNext;
        ListNode prev = new ListNode(-1);
        while(cur != null && cur.val < node.val){
            prev = cur;
            cur = cur.next;
        }
        if(cur == null){
            prev.next = node;
        }else{
            prev.next = node;
            node.next = cur;
        }
        return headNext;
    }
}
全部评论

相关推荐

02-05 08:49
已编辑
武汉大学 Web前端
野猪不是猪🐗:36k和36k之间亦有差距,ms的36k和pdd的36k不是一个概念
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务