Как я мог переписать этот метод Java с циклом while? - PullRequest
2 голосов
/ 23 февраля 2012

Предполагается извлечь последний элемент из псевдо-LinkedList.В инструкциях предлагалось использовать цикл while для поиска следующего за последним элемента.

public String removeFromEnd() {
    String removed = null;
    if (head == null) {
        return removed;
    } else if (head.getNext() == null) {
        removed = head.getName();
        head = null;
    } else if (head.getNext().getNext() == null) {
        removed = head.getNext().getName();
        head.setNext(null);
    }
    return removed;
}

Прошлые попытки обычно выглядят примерно так:

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012
  Node node = head;
  Node prev = null;
  while (node != null && node.getNext() != null) {
      prev = node;
      node = node.getNext();
  }
1 голос
/ 23 февраля 2012

В вашей попытке код ...

while (head.getNext().getNext() == null){
    removed = head.getNext().getName();
    head.setNext(null);
}

Вы войдете в этот цикл, только если head уже является вторым по последнему элементу. Вы хотите зациклить , пока head не станет вторым по последнему элементу. Это помогает вообще?

1 голос
/ 23 февраля 2012
// Java Code
public String removeFromEnd() {
String removed = null;
Node prev = null;
Node node = head;
        while(node != null && node.getNext() != null)
        {
            prev = node;
            node = node.getNext();
        }
        //the while loop should move the node to the end of the list
        if(node != null)
        {
        removed = node.getName();
        node = prev;
        node.getNext().removeNode();
        node.setNext(null);
        }
        return removed;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...