Добавляет значение в связанный список вместо конкретного значения - JAVA - PullRequest
0 голосов
/ 22 января 2019

Я создал код, который получает две вещи. 1) Данные о новом городе 2) Название определенного города (который мы должны искать и заменить новым городом).

Мой код:

public boolean replace(City c, String x) {
  CityNode temp = this._head, prev = null;
  while (temp != null && temp.getCity().getCityName().equals(x)) {
   prev = temp;
   temp = temp.getNext();
  }
  if (null == temp || null == temp.getNext()) return false;

  this._head = new CityNode(c);
  this._head.setNext(temp.getNext().getNext());
  temp.setNext(this._head);
  temp.setNext(this._head);

  return true;
 }

Согласно правому выводу (справа на картинке), если перед связанным списком было 3 города ... теперь их только 2 (в моем выводе - левая сторона картинки) это означает, что последняя запись в связанном списке не появляется (порядок отображаемых значений не имеет значения)

enter image description here

1 Ответ

0 голосов
/ 23 января 2019

Если вы хотите заменить определенный узел в связанном списке (CityNode в вашем случае), вы сможете сделать это, используя следующий код:

public boolean replaceCity(City newCity, String cityToBeReplaced) {

    CityNode temp = this._head, prev = null;

    //run thru the linked list until you find the cityToBeReplaced
    while(temp != null && !temp.getCity().getCityName().equals(cityToBeReplaced)) {
        prev = temp;
        temp = temp.getNext();
    }

    //cityToBeReplaced does not exist in the linked list
    if(temp == null) return false;

    CityNode newCityNode = new CityNode(newCity);

    //First node/head is what you want to replace
    if(this._head == temp) {
        this._head = newCityNode;
    } else {
        //Last cityNode or middle cityNode is what you want to replace
        prev.setNext(newCityNode);
    }

    newCityNode.setNext(temp.getNext());
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...