【问题标题】:Java: Linked ListsJava:链表
【发布时间】:2018-05-05 17:04:24
【问题描述】:

所以我的逻辑和我的代码是有道理的,但是当它运行时它不会停止并继续运行,所以我猜它是我的循环中的一个错误,但我不确定在哪里?

public void triplicate(){
    Link current = head;
    while(current!=null)
    {
    Link L1 = new Link (current.data);
    Link L2 = new Link (current.data);
    current.next=L1;
    L1.next=L2;
    L2.next=current.next;
    L1.data=current.data;
    L2.data=current.data;
    current=current.next;
    }
}
public static void main(String[] args) {
    LinkList l1 = new LinkList();
    l1.insertLast(6);
    l1.insertLast(3);
    l1.insertLast(9);
    System.out.println(l1);
    l1.triplicate();
    System.out.print(l1);
}        

希望有人能指出我的错误在哪里 非常感谢

【问题讨论】:

标签: java loops while-loop linked-list


【解决方案1】:

考虑你的代码:

current.next=L1;
L1.next=L2;
L2.next=current.next;

这将最终得到 L2.next 分配的 L1,这将是一个循环引用。我确定这不是你想要的。

尝试拆分为几种方法,以使您正在做的事情更加明显。比如:

private Link duplicate(Link link) {
    Link newLink = new Link(link.data);
    newLink.next = link.next;
    link.next = newLink;
    return newLink;
}

private void triplicate() {
    for (Link link = head; link != null; link = link.next)
        link = duplicate(duplicate(link));
}

【讨论】:

  • 所以如果我将其更改为 L2.next=current.next.next.next 。它会工作吗?
  • @Massoud 你为什么不直接尝试而不是让别人做你的功课?
猜你喜欢
  • 1970-01-01
  • 2012-06-18
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 2019-05-02
  • 2023-03-22
相关资源
最近更新 更多