2014-07-25 2 views
-3

HW 할당 작업. 이 할당은 링크 된 목록을 재귀 적으로 역전시키는 것입니다. 나는 왜 내 System.out.println(head.data) 라인 head.data에서 항상 0으로 인쇄 이해가 안 돼요. 4,5,6 (이 작업에 대한 채우기 및 읽기 방법)을 입력하면 마지막으로 인쇄 할 때 머리가 여전히 4, 5, 6임을 나타내며 head.nextnull입니다. 따라서 head.data은 동일하지 않습니다. ~ 6? 나는이 문제를 해결하기 위해 계속해서 다른 많은 문제가 있다는 것을 알고 있지만, 왜 head.nextnull 일 때 head.data이 0인지 이해할 수 없다. 나는 head.next이 현재 목록이 아니라 다음 항목이었을 것이라고 생각했다. 하나. 다음head.next == null 일 때 head.data가 0 인 이유는 무엇입니까?

public static Node reverse(Node head) 
{ 
    Node n = new Node(); 
    if (head == null) 
    { 
     return n; 
    } else if (head.next == null) 
    { 
     System.out.println(head.data); 
     n.data = head.data; 
     head.next = null; 
     n.next = reverse(head.next); 
     return n; 
    } else 
    { 
     reverse(head.next); 
     return n; 
    } 
} 

답변

0

(? 아마도 제로)도 data의 디폴트 값을 갖는 단일 요소리스트를되는 빈리스트의 역순

Node n = new Node(); 
if(head == null) { 
    return n; 
} 

결과

마지막 else은 분명히 옳지 않습니다. 반환하기 전에 어떤 것도 수행하지 않으므로 n입니다.

관련 문제