Val : integer;
next : link
end;
var Form1: TForm1; L : link; f1, f2 : textfile;
implementation
{$R *.dfm}
procedure add(var r : link);
begin
if r = nil then
begin new(r); r.next:=nil; read(f1, r.val) end
else add(r.next)
end;
procedure out(r : link);
begin
if r<> nil then
begin write(f2, r.val : 6); out(r.next) end
end;
function memb(r : link; b : integer) : boolean;
begin
if r=nil then memb:=false
else
if r.val=b then memb:=true
else memb:=memb(r.next, b)
end;
procedure dele(var r : link; w : integer);
var z : link;
begin
if r<>nil then
if r.val=w then
begin z:=r; r:=r.next; dispose(z) end
else dele(r.next, w)
end;
procedure TForm1.Button1Click(Sender: TObject);
var d : integer;
begin
assignfile(f1, ' file8.txt '); assignfile(f2, ' file9.txt ');
reset(f1);
L:=nil;
while not eof(f1) do add(L);
closefile(f1);
d:=strtoint(edit1.Text);
if memb(L, d) then
begin
dele(L, d);
rewrite(f2); out(L); closefile(f2);
memo1.Lines.LoadFromFile(' file9.txt ');
end
else showmessage(' Такого элемента нет ')
end;
Задачи
Задача 26. Создать очередь с помощью рекурсивной процедуры
procedure add(var r : link).
Описать рекурсивную функцию
function neg(r : link) : boolean;
проверяющую, имеется ли в списке элемент с отрицательным информационным полем. Ответ вывести в поле метки.
Задача 27*. Создать очередь с помощью рекурсивной процедуры
procedure add(var r : link).
Описать рекурсивную функцию
function nmemb(r:link; b:integer):integer;
подсчитывающую количество вхождений элемента с информационным полем b в список r.
С помощью этой функции подсчитать, сколько раз встречается в списке число, введённое в поле Edit1. Результат вывести в поле метки.
Задача 28*. Создать очередь с помощью рекурсивной процедуры
procedure add(var r : link).
Описать рекурсивную функцию
function max(r:link) : integer;
для нахождения максимума в списке r. Результат вывести в поле метки.
