#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.