Замена ссылок в связанном списке, неверный результатJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Замена ссылок в связанном списке, неверный результат

Сообщение Anonymous »

Код: Выделить всё

 public void question1(int key1,int key2){
//swapping keys by changing links not data:
Node temp = Head;
Node tempStr1 = null;
Node nextStr1=null,NextStr2=null;
Node tempstr2 = null;
while(temp.Next!=null){
if(temp.Next.data==key1){
nextStr1=temp.Next.Next;
tempStr1 = temp.Next;
}
if(temp.Next.data==key2){
NextStr2 = temp.Next.Next;
tempstr2 = temp.Next;//storing in temp var
}
temp=temp.Next;//update
}
while(temp.Next!=null){
if(temp.Next.data==key1){
temp.Next = tempstr2;
tempstr2.Next = nextStr1;
}
if(temp.Next.data==key2){
temp.Next = tempStr1;//swap
tempStr1.Next = NextStr2;
}
temp=temp.Next;//update
}

}
}
public static void main(String args[]){
LinkedList ll = new LinkedList();
ll.addFirst(1);
ll.addFirst(2);
ll.addFirst(3);
ll.addFirst(4);
ll.addFirst(5);
ll.addFirst(6);
ll.Print();
ll.question1(3, 2 );
ll.Print();

Я не понимаю, почему это не помогает.
Цель состоит в том, чтобы поменять местами два узла, просто изменив ссылки.
Ожидаемый результат: 6 5 4 2 3 1
Реальный результат: 6 5 4 3 2 1
Этот код для этого вопроса:

Замена узлов в связанном списке
У нас есть связанный список и два ключи в нем, поменяйте узлы местами для двух заданных ключей. Узлы следует менять местами, меняя ссылки. Обмен данными узлов может оказаться дорогостоящим во многих ситуациях, когда данные содержат много полей. Можно предположить, что все ключи в связанном списке различны.


Подробнее здесь: https://stackoverflow.com/questions/749 ... ect-result
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»