2011-03-14 4 views
1

링크 된 목록에이 Java 할당이 있습니다. 질문은 마지막 노드에서 n 번째 노드를 찾도록 요청합니다. 나는 다른 입력에 대해 그것을 테스트하고 잘 작동하지만 판사가 내 솔루션을 수락하지 않습니다. 함수는 다음과 같습니다.자바 할당

이 함수는 항상 head 음수가 아닌 n 값과 list head를 참조합니다.

Node findNtoLast (Node start, int n) 
{ 
    Node p,q; 

    p = start; 

    for(int i=0;i<n;i++) 
    { 
     p = p.next; 
    } 

    q = start; 

    while(p.next != null) 
    { 
     p = p.next; 
     q = q.next; 
    } 

    return q; 
} 

샘플 입력 :

A -> B -> C ->

n  output 
0  D 
1  C 
2  B 
3  A 

당신이 기능에 잘못 아무것도 생각할 수시겠습니까 D?

+0

'n'보다 짧은 목록으로 기능을 시험해보십시오. –

+0

@ Jon- 목록의 크기를 알고 있으면 작업이 더 쉽습니다. – Mahesh

답변

5

난 당신이 입력

n >= num of nodes 

현재 기능은 입력에 대한 NullPointerException이 줄 것이다 사건을 처리 할 필요가 있다고 생각합니다.

편집 :

노드 수를 셀 수 있습니다. 또는 for 루프를 다음과 같이 확인하십시오.

for(int i=0;i<n;i++) { 

    // have I reached the last node ? 
    if (p.next != null) { 
     p = p.next; 
    } else { 
     // n happens to be >= num of nodes..return null 
     return null; 
    } 
} 
+0

당신은 옳은 사람입니다. 노드 수를 세고 비교해야합니까? – Jon

+0

@Jon : 답변이 업데이트되었습니다. – codaddict

+0

그게 효과가있다. 많은 감사합니다. – Jon

관련 문제