Java:链接列表

时间:2017-11-22 04:00:58

标签: java loops while-loop linked-list

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

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);
}        

希望有人可以指出我的错误所在 非常感谢

1 个答案:

答案 0 :(得分:0)

考虑你的代码:

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));
}