java - 如何在当前链表中复制我的节点?

标签 java while-loop linked-list nodes

我很难找到家庭作业的解决方案。我的教授给了我一堆测试链表,并希望我复制链表中存在的每个节点。

示例:

    int[] array = {1, 2, 3, 4, 10};
    LinkedIntList list = new LinkedIntList(array);
    list.stutter();

打印出新列表时的结果应该是:{1, 1, 2, 2, 3, 3, 4, 4, 10, 10}

这是我到目前为止所拥有的......(我想不出合理的 while 循环)

public void stutter(){

    if (front == null) {
        return;
    }
    ListNode current = front;
    while (current.next != null) {
        if (current != null) {
            ListNode duplicate = new ListNode(current.data, current.next);
            current.next = duplicate;

        } 
        current = current.next;
    }
}

我也有很多构造函数,但由于我在我的方法中调用了一个构造函数,因此这里是相关的构造函数:

public ListNode(int data, ListNode next){
    this.data = data;
    this.next = next;
}

感谢任何帮助!!!

最佳答案

您只需确保指向重复项的 next 而不是 current.next:

public void stutter() {
    for (ListNode current = front; current != null; ) {
        ListNode duplicate = new ListNode(current.data, current.next);
        current.next = duplicate;
        current = duplicate.next
    }
}

关于java - 如何在当前链表中复制我的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58423813/

相关文章:

JAVA 8 Stream 过滤器使用 Predicate 获取最新记录

java - 为什么JUnit使用CountDownLatch来实现FailOnTimeout

java - Hybris 自定义电子邮件设置自定义属性

python - While 循环要求输入并在时间到时中断

java - 需要对 Queue 和 LinkedList 实现进行一些说明

c - 在循环中使用int n = strlen(…)时出现运行时错误

Python while 循环永远不会停止,即使它应该

algorithm - 带有一些操作的双向链表

c - 为什么我的deleteNode 函数不起作用?

java - 抛出自定义 Java 异常