2013-10-09 3 views
0

Я пишу метод для свопинга смежных значений в связанном списке, и я смущен тем, что происходит, когда вы устанавливаете значения, равные друг другу. Например, скажем, у меня есть связанный список, и я хочу поменять элементы на индексы 4 и 5 (например, список содержит 10 элементов). Если я использую код:Swap Метод связанного списка в java, значения которого изменяются

Node tempAt = getNode(4); 
Node tempPost = getNode(5); 
getNode(3).next = tempPost; 
tempAt.next = tempPost.next; 
tempPost.next = getNode(3); 

делает эту работу? В принципе, меня смешивают с переменными. Когда вы устанавливаете один узел равным другому (пример: Node temp = listHead), это темп по существу тот же, что и node listHead? Если я изменю listHead, будет ли изменен temp? EDIT: Кроме того, если я создаю что-то вроде: Node temp = listHead, а затем измените значение listHead.next, каково будет значение temp.next?

+2

* Это работает? * -> Ну, попробуй, посмотри. –

+1

'Это работает? Почему бы не попробовать? – Prateek

+0

Код был просто для иллюстрации того, что я имею в виду. Я больше всего смущен о последней части сообщения (редактирование) – bensherms

ответ

0

В вашем редакторе, Node temp = listHead. temp - это переменная, которая содержит значение listHead. listHead имеет следующее поле, которое также является переменной, удерживающей значение для другого узла. Когда вы меняете listHead.next, вы меняете значение поля next в объекте listHead, а значение temp по-прежнему является объектом listHead, поэтому, когда вы говорите temp.next, то есть listHead.next.

Вы можете прочитать this article, если хотите узнать больше о том, как Java проходит по значению.

Смежные вопросы