2025年--Lc197-077. 排序链表(链表,尾插法)--Java版

1.题目


2.思路

(1)计算节点数

(2)创建数组存储链表的节点值

(3)对数组进行排序

(4)利用尾插法生成链表

3.代码实现

java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode sortList(ListNode head) {
        //如果是空链表或者只有一个链表节点,我们直接返回
        if(head==null||head.next==null)
        {
            return head;
        }
        int num=0;
        ListNode tmp=head;
        while(tmp!=null)
        {
            num++;
            tmp=tmp.next;
        }
        //创建1个新数组
        int[] nums=new int[num];
        int i=0;
        tmp=head;
        while(tmp!=null)
        {
            nums[i]=tmp.val;
            tmp=tmp.next;
            i++;
        }
        //对数组进行排序
        Arrays.sort(nums);
        //因为nums是升序排序,所以构造链表是尾插法
        //链表的头指针(第一个节点)。最终返回它。
        ListNode begin=null;
        ListNode end=null;
        for(int j=0;j<num;j++)
        {
            if(begin==null)
            {
            begin=new ListNode(nums[j]);// 创建第一个节点
            end=begin;// 此时头节点也是尾节点
            }
            else{
            ListNode p=new ListNode(nums[j]);// // 新节点
            end.next=p;// 把新节点接在"尾巴"后面
            p.next=null;// 新节点的 next 指向 null
            end=p;// 更新尾指针,指向新的尾节点
        }


    }
    return begin;
}
}
相关推荐
码兄科技6 小时前
Java AI智能体开发实战:从零构建智能对话系统指南
java·开发语言·人工智能
折哥的程序人生 · 物流技术专研6 小时前
第8篇:六大设计原则在工厂模式中的体现
java·设计模式·设计原则·工厂模式·编程进阶·扩充系列
问君能有几多愁~6 小时前
C++ 数据结构复习笔记
数据结构·c++·笔记
至乐活着7 小时前
深入解析跳表SkipList:原理、实现与性能优化实战
数据结构·算法·跳表·skiplist·java实现
小明bishe187 小时前
计算机毕业设计之基于JAVA的植物科普网站
java·spring boot·spring·架构·课程设计
r_oo_ki_e_7 小时前
Java Map 集合学习笔记
java·笔记·学习
SL-staff7 小时前
智慧园区2000+设备统一管理:JVS-IoT如何降低运维成本40%
java·开发语言·物联网·智慧园区·设备管理·运维优化·jvs-iot
咖啡八杯8 小时前
GoF设计模式——模板方法模式
java·后端·spring·设计模式
爱笑的源码基地8 小时前
一款全开源的信创云PACS影像云平台解决方案,支持多模态医学影像处理(CT/MR/DR/超声/病理等)
java·源码·国产化·pacs·云影像·区域pacs
我命由我123459 小时前
Android 开发问题:ClickableSpan 的点击事件没有生效
java·java-ee·android studio·android jetpack·android-studio·android runtime