2013-06-09 2 views
-1

Я выполняю упражнение 1.3.26 книги «Алгоритмы ЧЕТВЕРТОЕ ИЗДАНИЕ».Как улучшить упражнение связанного списка?

/** * 1.3.26 Запись метод удаления(), который принимает связанный список
* и ключ строки в качестве аргументов и удаляет все узлы
* в списке, которые имеют ключ, его поле позиции.
*
* Java LinkListRemove к
*, чтобы быть или ехать в, чтобы умереть
*^г/^ д
* перед тем удалить:
*, чтобы быть или идти к к умирают
* результат REMOVE:
* быть или идти умирать
* размер: 4
*
*/

Моя реализация здесь LinkListRemove, и она работает. Но я чувствую, что это не изящно. Можно ли использовать только однократный обход одноуровневого списка?

Мой ход мыслей процесс 2 этапа:

  1. Удалить последовательные ключи от первого, после обработки, то linklist начинается с неключевых узла или пуст.
  2. Удалите согласованный узел после первого узла, теперь список ссылок начинается с неключевого узла или пуст.

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

+1

Вы можете улучшить это, работая над этим, а не спрашивая –

+0

Нет проблем. Вы просматриваете список ровно один раз. –

ответ

0

Насколько я понимаю из вашего вопроса, вы хотите удалить все элементы из списка, которые соответствуют данному ключу.

Да, это можно сделать за одну итерацию списка. Ниже приведены шаги:

Node temp =null; 
if(key != null && first != null){ 
    if(key.equals(first.item)){    
     temp = first; 
     first = first.next; 
     temp.link=null; 
     temp =null; 
     return; 
    } 
    else{ 
     Node tempIt = first.link; 
     temp = first; 
     while(tempIt != null) 
      { 
       if(key.equals(tempIt.item)){ 
        temp.link = tempLt.link; 
        tempLt.link = null; 
        tempLt = null; 
       } 
       temp = tempLt; 
       tempLt= tempLt.next; 
      } 
     } 
} 
return; 

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

  • Нет связанных вопросов^_^