2017-11-22 1 views
-6

내 논리와 코드가 의미가 있지만 실행하면 멈추지 않고 계속 실행되므로 내 루프에서 오류가 발생한다고 생각하지만 실제로 어디에 있는지 잘 모르겠습니다.Java : Linked Lists

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

희망 누군가가 내 실수가 감사

+2

'LinkList'란 무엇입니까? 이 코드가 실제로 컴파일됩니까? [mcve] –

+0

'L2.next = null;을 게시하십시오. and current = current.next.next;' –

+0

@LuaiGhunim does does work – Massoud

답변

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

그래서 L2.next = current.next.next.next로 변경하십시오. 작동할까요? – Massoud

+0

@Massoud 왜 다른 사람들에게 숙제를하라고 요구하는 대신에 그것을 시도해 보시지 않겠습니까? – Robert