Обычно удаление из списка связывается с перенаправлением связи к удаленному узлу, чтобы закрыть доступ к нему.
Удаление узла следующего за текущим.
Пусть указатель С указывает на какой либо элемент списка и требуется удалить элемент следующий за ним. Для решения этой задачи необходимо в поле next узла, на который указывает С, поместить содержимое поля next удаляемого узла, после этого связь с удаляемым узлом теряется.
C^.next:=c^.next.^next;
В данном случае нарушена только связь с узлом при этом в динамической памяти узел остался и занимает память узел остался и занимает память, для того чтобы удалить это элемент из ДП необходимо.
Сохранить адрес удаляемого узла.
Нарушить связь с удаляемым узлом.
Выполнить dispose с сохраненным адресом.
Пример удаления узла.
Var
Tmp:pn;
.
.
Tmp:=C^.next;
C^.next:=c^.next^.next;
Dispose(tmp);