1.Для однонапрвленного списка
а) найти наибольший элемент
б) удалить все простые числа
в)найти кол-во четных чисел
г) Вставить новый элемент между двумя равными по значению
2.Для двунаправленного списка
а)найти наибольший элемент(исп наследовательный метод)
б)найти количество четных (исп наследовательный метод)
Выручите пожалуйста, много других еще проблем а голова уже совсем не варит
Реализация списка:
elem=record
inf:integer;
next,pred:list;
end;
sp=object
l:list;
procedure init;
procedure add(x:integer; p: list);
procedure del(p:list);
function locate(x:integer):list;
function retrieve(p:list):integer;
function end_:list;
function first:list;
procedure print;
end;
sp2=object
l:list;
procedure init;
procedure add(x:integer; p: list);
procedure del(p:list);
function locate(x:integer):list;
function retrieve(p:list):integer;
function end_:list;
function first:list;
procedure print;
end;
procedure sp.init;
begin
new(l);
l^.inf:=0;
l^.next:=nil;
end;
procedure sp.add;
var t:list;
begin
new(p^.next);
p^.next^.info:=x;
p^.next^.next:=t;
end;
procedure sp.del;
begin
p^.next:=p^.next^.next;
end;
function sp.locate;
var p,q:list
begin
p:=l; q:=nil;
while p^.next<>nil do begin
if p^.inf=x then q:=p;
p:=p^.next;
end;
locate:=q;
end;
function sp.retrieve;
var q:list;begin
q:=l;Retrieve:=0;
while q^.next<>nil do begin
if q^.next=p then Retrieve:=q^.inf;
q:=q^.next;
end;
end;
function sp.end_;
var q:list;
begin
q:=l;
while q^.next<> nil do q:=q^.next;
end_:=q;
end;
function sp.first;
begin
first:=l^.next;
end
prosedure sp.print;
var q:list;
begin
q:=l;
while q<>nil do begin
writeln(q^.info);
q:=q^.next;
end;
end;
procedure sp2.init;
begin
new(l1);
l1^.inf:=0;
l1^.next:=l1;
l1^.pred:=l1;
end;
function sp2.locate;
var p,q:list;
begin
p:=l1^.next;
q:=nil;
while p<>l1 do begin
if p^.inf=x then q:=p;
p:=p^.next;
end;
Nmesto:=q;
end;
rocedure sp2.print;
var p:list;
begin
writeln('Vivod polu4ennogo spiska');
p:=l1^.next;
while p<>l1 do begin
write(p^.inf,' ');
p:=p^.next;
end;
writeln;
end;
var s:sp;
x:integer;
begin
sp.init;
readln (x);
while x <> 0 do begin
sp.add(x,sp.end_);
readl(x);
end;
writeln(sp.retrieve(sp.first));
sp.print;
end.