Как вставить узел в связанный список:
- Если список пуст, новый узел станет первым, а если мы будем отслеживать это, также последним
- В противном случае найдите позицию, куда вставить, есть три возможности:
a) новый узел должен быть вставлен перед первым
b) новый узел должен быть вставлен после последнего
c) новый узел должен быть вставлен между двумя существующими узлами - Обновите соответствующие ссылки, которые могут быть полями
first
, last
и некоторыми next
и previous
, в зависимости от того, где он долженбыть вставленным
if (first == null) {
// the list is empty so far
} else
Чтобы найти позицию, сначала сравните данные с данными первого узла, чтобы увидеть, нужно ли их вставлять перед первым узлом.
if (newLink.iData.compareTo(first.iData) > 0) {
// put newLink before first
} else {
Вы должны сосредоточиться на каком-то узле списка.Следуйте списку с самого начала, пока не дойдете до точки вставки:
Link focus = first; // focus first node
while(focus.next != null && newLink.iData.compareTo(focus.next.iData) < 0) {
focus = focus.next;
}
// now you have to insert the new value behind focus, left as exercise
if (focus.next == null) {
// newLink becomes the last node in the list
} else {
// newLink has to be inserted between focus and focus.next
}
}
Затем вставьте.Остерегайтесь краевых чехлов, вставка спереди и конец немного отличаются.