Я пытаюсь изменить связанный список, который работает, но когда я пытаюсь распечатать оригинал, он не работает (только печатает голову). Мой вопрос заключается в том, почему реверсирование влияет на оригинал. Ниже мой код. 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
}
EDIT :: Это кажется Java вещь. Java передает объект по ссылке. Когда я передаю головку в качестве параметра, она передается по ссылке, и любое изменение, внесенное в нее, отражается в вызывающей функции. Выполнение узла h = head, а затем передача h в качестве параметра не будет работать, так как h будет тем же объектом, что и голова. Единственный вариант, о котором я могу думать, это создать новый объект, скопировать связанный список и передать его как параметр.
Мой вопрос будет, есть ли лучшее решение?
Вы имеете в виду что-то вроде узла h = head; reverse (h) – jCoder
Чтобы получить отдельный объект, вам нужно вызвать 'new Node()'. – 4castle
@ 4castle поэтому, если я делаю Node t = новый узел(), а затем t = head, который все еще не работает. Я предполагаю, что мне нужно сделать t = head, так как это то, что я пытаюсь изменить? – jCoder