Шпаргалка: Последовательные таблицы
dispose(последний.связь)
end
Сложность К/2
procedure удалить(var таблица, последний: ссылка; ключ: key);
var текущий: ссылка;
{если элемент последний или первый, то рассмотрим отдельно, иначе сдвинем ссылку и освободим память}
if {таблица пуста} then write (‘Таблица пуста’) else
if {в таблице один элемент} then
if {единственный элемент есть искомый} then {сделать таблицу пустой}
else write(‘нет искомого элемента в таблице’)
else write (‘нет искомого элемента в таблице’)
else {поиск в таблице}
new(текущий);
текущий.ключ=ключ;
текущий.связь:=nil;
последний.связь:=текущий;
текущий:=таблица;
while текущий.ключ<> ключ do begin
предок:=текущий;
текущий:=текущий.связь
end
if {первый элемент - искомый} then begin
текущий:=таблица;
таблица:= текущий.связь;
dispose(текущий)
end
if {последний- искомый (текущий=последний)} then begin
последний:=предок;
последний.связь:=nil;