You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java有序链表实现求助:初始为空,添加指定奇数元素

别慌,我来一步步帮你搭建这个适配测试用例的Java链表类,重点搞定addSorted方法!

第一步:先定义链表的核心——节点类

链表的基本组成单元是节点,每个节点需要存储数据和指向下一个节点的引用,代码很简单:

class ListNode {
    Integer data; // 存储要添加的奇数Integer对象
    ListNode next; // 指向下一个节点的引用

    // 构造方法,创建节点时直接传入数据
    public ListNode(Integer data) {
        this.data = data;
        this.next = null; // 初始时没有下一个节点
    }
}
第二步:搭建链表的主体类

接下来创建链表类,我们叫它SortedOddLinkedList(突出是存有序奇数的链表),初始化时是空链表,完全对应你的测试用例起始条件:

public class SortedOddLinkedList {
    private ListNode head; // 链表的头节点,空链表时为null

    // 构造方法:初始化空链表
    public SortedOddLinkedList() {
        this.head = null;
    }
}
第三步:实现关键的addSorted方法

这是核心逻辑,要保证添加的奇数始终让链表保持升序。我们分三种典型情况处理:

  1. 链表是空的:直接把新节点作为头节点
  2. 新元素比头节点的元素小:插在链表最前面
  3. 新元素需要插在中间或尾部:遍历找到合适位置再插入

另外可以加个校验,确保传入的是符合要求的奇数(贴合测试用例的约束),代码如下:

public void addSorted(Integer element) {
    // 校验:只能添加1到9999之间的奇数Integer对象
    if (element == null || element < 1 || element > 9999 || element % 2 == 0) {
        throw new IllegalArgumentException("请传入1-9999范围内的奇数Integer对象");
    }

    ListNode newNode = new ListNode(element);

    // 情况1:空链表,直接设为头节点
    if (head == null) {
        head = newNode;
        return;
    }

    // 情况2:新元素比头节点小,插在头部
    if (element < head.data) {
        newNode.next = head;
        head = newNode;
        return;
    }

    // 情况3:遍历找插入位置,找到第一个比新元素大的节点的前一个节点
    ListNode current = head;
    while (current.next != null && current.next.data < element) {
        current = current.next;
    }

    // 插入新节点到current的后面
    newNode.next = current.next;
    current.next = newNode;
}
第四步:加个测试用的打印方法

方便你快速验证链表的顺序是否正确:

public void printLinkedList() {
    ListNode current = head;
    while (current != null) {
        System.out.print(current.data + " ");
        current = current.next;
    }
    System.out.println();
}
测试你的场景

比如从空链表开始添加3、1、5这些奇数:

public static void main(String[] args) {
    SortedOddLinkedList list = new SortedOddLinkedList();
    list.addSorted(3);
    list.addSorted(1);
    list.addSorted(5);
    list.printLinkedList(); // 输出:1 3 5,完美符合有序要求
}

如果需要处理重复元素、或者更复杂的边界情况,可以再调整逻辑~

内容的提问来源于stack exchange,提问作者Samuraike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:56:45