Как мне завершить этот метод, чтобы добавить значение в связанный список в Java?

#java #linked-list #insert #nodes

#java #linked-list #вставить #узлы

Вопрос:

Итак, я новичок в связанных списках в Java. Мне нужно завершить метод, который добавляет элемент в связанный список. Кто-нибудь может помочь мне выполнить оператор if, чтобы метод работал правильно? Спасибо за помощь.

 void insert(int item)
  {
//find location to insert
Node current = head;
Node prev = null;
boolean located = false;

while(!located amp;amp; current != null)//correct location found
{ 
  //I need to add a condition to the if statement below. What is the condition
    if(item
    current = current.link;//assign the next node from head to current node
  }

  //create new node and
  //refer to the correct location in list 
  Node newNode = new Node(item, current);

  //set link to refer to new node
  if (current == head)
  {
    head = newNode;//new node to head
  }
  else
  {
   //place new node after previous LINK reference not the node itself
   prev.link = newNode; 
  }    
}
  

Комментарии:

1. Я имел в виду «вашу» помощь 🙂

2. Затем вы можете редактировать.

Ответ №1:

Я предполагаю, что список должен быть отсортирован? Если нет, то самое простое, что можно сделать, это добавить новый элемент в начало списка:

 head = new Node(item, head);
  

Однако, если его необходимо отсортировать, вам нужно найти первый элемент, который больше, чем вставляемый элемент:

 while (!located amp;amp; current != null) { 
    if (item < current.item) {
        prev = current;
        current = current.link;
    } else {
        located = true;
    }
}

Node newNode = new Node(item, current);
if (current == head) {
    head = newNode;
} else {
    prev.link = newNode; 
}    
  

Этот код ищет точку, в которую необходимо вставить новый элемент. В этот момент prev и current ссылаются на узлы до и после нового узла. Если вы дойдете до конца списка, то current будет равно null.