2015-10-31 2 views
1

Я пытаюсь реализовать класс связанныйList, добавляя метод reverse (int n), чтобы перевернуть связанный список. Например, у меня есть связанный список {A -> B -> C -> D -> E). Когда я вызываю reverse (4), связанный список станет D -> C -> B -> A -> E.Реализация связанного списка в JAVA (обратный без использования итератора)

Я стараюсь избегать использования итератора, построения нового узла и копирования значения данных. Кто-нибудь знает, как это сделать? Я знаю, что есть сообщение об обратном связывании списка, но это реверсирует весь связанный список.

Большое вам спасибо за помощь!

+0

Просто используйте тот же самый принцип. –

ответ

1

Поскольку вы не предоставите вашу реализацию LinkedList, я могу только представить общую идею:
Полный список может быть отменен просто swaping указателей на предыдущий узел и следующий узел и обновление поле для последний и первый узлы.

void reverse() 
    node tmp = first 
    first = last 
    last = tmp 

    while(tmp.next != null) 
     node swap = tmp.next 
     tmp.next = tmp.previous 
     tmp.previous = swap 

     tmp = swap 

Я оставлю вас, чтобы добавить границы

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