Иллюстрированный самоучитель по Delphi 7 для начинающих

Удаление элемента из списка

while (curr <> NIL)and(node.f_name > curr^.f_name) do
begin
// введенное значение больше текущего
pre: = curr;
curr: = curr^.next; // к следующему узлу
end;
if pre = NIL
then
begin
// новый узел в начало списка
node^.next: = head;
head: = node;
end
else
begin
// новый узел после pre, перед curr
node^.next: = pre^.next;
pre^.next: = node;
end;
Edit1.text: = '';
Edit2.text: = '';
Edit1.SetFocus;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
curr: TPStudent; // текущий элемент списка
n:integer; // длина (кол-во элементов) списка
st:string; // строковое представление списка
begin
n: = 0;
st: = '';
curr: = head;
while curr <> NIL do
begin
n: = n+1;
st: = st+curr^.f_name+' '+curr^.l_name+#13;
curr: = curr^.next;
end;
if n <> 0
then ShowMessage('Список:'+#13+st)
else ShowMessage('В списке нет элементов.');
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
head: = NIL;
end;
end.

Процедура просматривает список от начала, сравнивая содержимое полей текущего узла с содержимым полей ввода диалогового окна. Если их содержимое совпадает, то процедура просит пользователя подтвердить удаление узла. Если пользователь нажатием кнопки ОК подтверждает, что узел должен быть удален, то процедура удаляет его. Если узла, который хочет удалить пользователь, в списке нет, программа выводит сообщение об ошибке.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.