А яким чином можна вставити новий елемент в зв'язний список? Або видалити? Виявляється, що для виконання цих операцій потрібно виконати невелику роботу з покажчиками.
Для однозв'язного списку існує тільки один варіант вставки - після заданого елемента списку. Потрібно встановити так, щоб покажчик Next нашого нового вузла вказував на вузол після заданого, а покажчик Next заданого вузла -на наш новий вузол. У коді це виглядає наступним чином:
Аналогічно, для видалення найпростішим варіантом є видалення елемента, що знаходиться після заданого вузла. В цьому випадку ми встановлюємо, щоб ука-
затель Next заданого вузла вказував на вузол, розташований після видаляється. Після цього видаляється вузол вже виділено зі списку і може бути звільнений. У коді це виглядає наступним чином:
Малюнок 3.3. Видалення вузла з однозв'язного списку
Проте, для обох операцій існує спеціальний випадок: вставка перед першим елементом списку (тобто новий елемент ставати першим) і видалення першого елемента списку (тобто першим стає інший елемент). Оскільки в наших міркуваннях перший елемент вважається визначальним вузлом всього списку, код для цих випадків потрібно написати окремо. Вставка перед першим вузлом буде виглядати наступним чином:
а видалення буде виглядати так: var GivenNode, NodeToGo. PSimpleNode; begin • • •
Зверніть увагу, що код вставки елемента буде працювати навіть в разі, коли вихідний список порожній, тобто містить nil, а код видалення елемента правильно встановить вміст зв'язного списку в разі видалення з нього останнього вузла.