2013-05-12 2 views
0

안녕하세요, 저는 단일 링크 된 목록을 뒤집을 방법을 궁금합니다. 지금까지 살펴본 예제에서 역방향 메서드는 반환 형식이 void이고 반환 형식이 단독 연결 목록 (SLL) 인 형식이 필요합니다. 모든 노드 참조를 처리하기 위해 Node라는 내부 클래스가 있습니다. 단일 링크 된 목록을 역순으로하는 방법 - Java

public SLL<E> reverse() { 
    Node<E> first = null; 
    Node<E> current = this; // produces compilation error 
    while (current != null) { 
     Node<E> save = current; 
     current = current.next; 
     save.next = first; 
     first = save; 
    } 
    return first; 
} 

나는 다음과 같은 컴파일 오류 얻을 :

오류 : 필요한 호환되지 않는 유형 : myprog.SLL.Node 발견 : myprog.SLL

내가 지금까지 무엇을 가지고

Node를 처리 할 때 SLL 유형의 목록을 반환하는 방법을 궁금합니다. 나는 또한 나의 반환 계산서가 틀릴지도 모르다는 것을 생각한다. 당신이 내 질문을 이해하기 위해 더 많은 코드가 필요한 경우

, 단지 사전에 :)

감사를 물어!

+2

이 사이트는 코딩 서비스가 아닙니다. 실제로 뭔가 배우고 싶다면 자신의 수업을하십시오. * 귀하의 코드 *가 붙어있는 경우 특정 코딩 문제와 관련하여 도움을 요청하십시오. 이 질문은 너무 광범위하고 솔직히 우리가 당신을 도울 수있는 최선의 방법은 대답을하지 않는 것입니다. – Bohemian

답변

1

SLL은 목록의 첫 번째 노드에 'head'또는 'first'포인터가있는 클래스 여야합니다. 당신은 아마도 원래의 역 순서로 복사 새로운 노드와 새로운 SLL 될 것 인 SLL을 반환 할 것을 의미하는 경우

. 이 자리에서 역전 원래 SLL를 돌연변이가있는 경우 (코드도 그 작동 여부를 확인하지 않은)

public SLL<E> reverse() { 
    SLL<E> result = new SLL<E>(); 

    // copy Nodes into new list, in reverse order. 
    // 
    Node<E> read = this.first; 
    while (read != null) { 
     // insert Copy, first; 
     Node<E> copy = new Node<E>(read.getItem()); 
     copy.next = result.first; 
     result.first = copy; 
     // advance 'Read Position'. 
     read = read.next; 
    } 

    // done. 
    return result; 
} 

, 당신은 SLL 결과를 반환하지만, 단지 무효 할 수 없습니다.

희망이 도움이됩니다.

+0

도움에 감사드립니다! –

관련 문제