Обратный метод для List в Java печатает список дважды - PullRequest
0 голосов
/ 01 мая 2020

Для экзамена я тренируюсь писать некоторые алгоритмы к финальному экзамену. Одним из них является создание метода reverse (), который переворачивает List <>. Проблема в том, что мой метод печатает список дважды. Как я могу изменить метод?

Здесь код файла List. java. Методы removeFromBack (), removeFromFront (), insertAtBack (), insertAtFront (), print (), isEmpty (), классы List и ListNode уже определены в книге Java Дейтеля:

   public void reverse()
   {
      if ( isEmpty() ) 
      {
         return;
      } // end if
      ListNode< T > current = firstNode;

      // while not at end of list
      while ( current != null)
      {
          insertAtFront(current.data);
          current = current.nextNode;
      }  // end while


   }

1 Ответ

0 голосов
/ 01 мая 2020

Я нашел такое решение:

  public void reverse() {
      int size = 0;
      if (isEmpty()) {
          return;
      } // end if
      ListNode < T > current = firstNode;

      while (current != null) {
          current = current.nextNode;
          size++;
      }

      current = firstNode;

      // while not at end of list
      while (size != 0) {
          insertAtFront(current.data);
          current.data = null;
          current = current.nextNode;
          size--;
      }

      current = firstNode;

      while (lastNode.data == null) {
          removeFromBack();
      }

  }
...