Изменения

Перейти к: навигация, поиск

Список

1265 байт добавлено, 02:56, 10 июня 2012
Нет описания правки
Рассмотрим базовые операции на примере односвязного списка.
===Вставка===
Очевиден случай, когда необходимо добавить элемент (<tex>newHead</tex>) в голову списка. Установим в этом элементе ссылку на старую голову, и обновим указатель на голову.
<pre>
insert(newHead)// вставка в голову списка
newHead.next = head;
head = newHead;
</pre>
Если же на нужно вставить элемент (<tex>thatElement</tex>) в определенную позицию после какого-то другого элемента (<tex>thisElement</tex>), то просто изменим соответствующие ссылки.
<pre>
insertAfter(thisElement, thatElement)// вставка после this_element
thatElement.next = thisElement.next;
thisElement.next = thatElement;
</pre>
===Поиск===
Для того, чтобы найти элемент по значению (<tex>value</tex>), будем двигаться по списку от головы до конца и сравнивать значение в элементах с искомым. Если элемента в списке нет, то возвращаем <tex>NULL</tex>.
<pre>
Search(value)//ищем элемент, в случае неудачи возвращаем NULL
node = head;
while (node != NULL) && (and value != node.value)
node = node.next;
return node;
</pre>
===Удаление===
Для того, чтобы удалить голову списка - переназначим указатель на голову на второй элемент списка, а голову удалим.
<pre>
removeHead()//удаление головы
delete tmp;
</pre>
Удаление элемента после заданного (<tex>thisElement</tex>) происходит следующим образом: изменим ссылку на следующий элемент на следующий за удаляемым, затем удалим нужный объект.
<pre>
removeAfter(thisElement)
if (thisElement != NULL) && (thisElement.next != NULL)
tmp = thisElement.next;
thisElement.next = thisElement.next.next;
61
правка

Навигация