작동하는 연결된 목록을 역전하려고하는데 원본을 인쇄하려고 할 때 오류가 발생합니다 (헤드 만 인쇄합니다). 내 질문은, 왜 원래의 것에 영향을 미칠 것인지입니다. 아래는 제 코드입니다. LinkedList는 내 자신의 클래스이므로 Node도 마찬가지입니다. 반전하기 전에 목록을 인쇄하려고하면 그 목록이 인쇄됩니다.원본을 변경하지 않고 Java에서 연결된 목록 반전하기
public static void main(String[] args) {
LinkedList list;
...
Node head = list.getHead();
Node rev = reverse(head);
Node temp = rev;
while (temp != null) {
System.out.println(temp);
temp = temp.next;
}
temp = head;
while (temp != null) {
System.out.println(temp);
temp = temp.next;
}
}
private static reverse(Node head) {
// Reversing the linked list
}
편집 : 이것은 자바 일 것 같습니다. Java는 참조로 객체를 전달합니다. head를 매개 변수로 전달하면 참조로 전달되고 그에 대한 변경 사항은 호출 함수에 반영됩니다. 노드 h = head를 수행하고 h를 매개 변수로 전달하면 h가 머리와 동일한 객체가되므로 아무 것도 작동하지 않습니다. 내가 생각할 수있는 유일한 방법은 새 개체를 만들고 링크 된 목록을 복사 한 다음이를 매개 변수로 전달하는 것입니다.
제 질문은 더 좋은 해결책입니까? 당신은, 당신은 점점 객체 '는'머리를 얻는 경우에
Node h = head와 같은 것을 의미합니까? reverse (h) – jCoder
별도의 객체를 얻으려면'new Node()'를 호출해야합니다. – 4castle
@ 4castle 그래서 Node t = new Node()를 누른 다음 t = head를 입력해도 여전히 작동하지 않습니다. 나는 내가 머리를 바꿔야한다고 가정하고있다. 왜냐하면 그게 내가 뒤집어 씌우려 고하는 것이기 때문이다. – jCoder