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

链表插入方法实现求助:指定ID电影后插入新对象(无第三方包)

解决链表中指定ID节点后插入新Movie的问题

看起来你卡在链表的插入操作上啦,别担心,咱们一步步来搞定这个问题~

问题分析

你现有的getMovie方法只能返回对应ID的Movie数据对象,但链表的插入操作需要操作**节点(Node)**本身——因为我们需要修改目标节点的next指针,来把新节点链入链表。这应该是你尝试失败的核心原因:只拿到数据没法调整链表的结构。

完整解决方案

我们需要先实现一个能找到对应ID节点的方法,再基于这个节点完成插入逻辑:

1. 新增获取目标节点的方法

先写一个getNodeById方法,用来找到对应ID的Node(而不是仅返回Movie数据):

private Node getNodeById(int id) {
    Node current = head;
    while (current != null) {
        if (current.getData().getId() == id) {
            return current;
        }
        current = current.getNext();
    }
    return null; // 找不到对应ID的节点
}

2. 实现insertAfter方法

基于上面的方法,我们就可以完成插入逻辑了:

public boolean insertAfter(Movie newMovie, int targetId) {
    // 1. 找到目标ID对应的节点
    Node targetNode = getNodeById(targetId);
    if (targetNode == null) {
        return false; // 找不到目标节点,插入失败
    }

    // 2. 创建新节点包装新的Movie对象
    Node newNode = new Node(newMovie);

    // 3. 调整指针:先让新节点指向目标节点原来的下一个节点
    newNode.setNext(targetNode.getNext());
    // 4. 再让目标节点指向新节点
    targetNode.setNext(newNode);

    return true; // 插入成功
}

代码解释

  • 为什么要找Node而不是Movie?因为链表的结构是靠节点之间的next指针维系的,只有拿到目标节点,我们才能修改它的指针指向,把新节点插入进去。
  • 指针调整的顺序很重要:必须先让新节点指向原目标节点的下一个节点,再修改目标节点的next指向新节点——不然会丢失原链表的后续节点引用。

调用示例

假设你有一个链表实例,现在要在ID为5的Movie后插入新的Movie:

Movie newFilm = new Movie(10, "新电影", "2024");
boolean isInserted = yourLinkedList.insertAfter(newFilm, 5);
if (isInserted) {
    System.out.println("插入成功!");
} else {
    System.out.println("找不到ID为5的电影,插入失败。");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:07:57