Я написал следующую программу. Swap работает нормально, если я его отлаживаю. Однако я не могу вернуть полный список ссылок. Он также меняет голову. что не так?Обмен двумя узлами одного связанного списка. У меня есть программа. Мне нужно спросить, где его неправильно
public static Node<Integer> swapElementsAtiAndj(Node<Integer> head, int i, int j)
{
Node<Integer> temp= head;
Node<Integer> prev1 = temp;
Node<Integer> prev2 = temp;
Node<Integer> toSwap1 = temp;
Node<Integer> toSwap2 = temp;
int count =0;
int pos1 =i;
int pos2 =j;
if(i>j) {
pos1 = j;
pos2 =i;
}
while (count !=pos1) {
prev1 = toSwap1;
toSwap1 = toSwap1.next;
prev2 = prev1;
toSwap2 = toSwap1;
count++;
}
while(count != pos2) {
prev2 = toSwap2;
toSwap2 = toSwap2.next;
count++;
}
temp.data = toSwap1.data;
temp.next = toSwap2.next;
toSwap2.next = toSwap1.next;
prev2.next = temp;
prev1.next = toSwap2;
return head;
}
Вы изменяете температуру, которая является головкой. BTW: вы не должны инициализировать переменные со значениями, которые вам не нужны. – eckes