Acasa Tehnologie Operatii lista simplu inlantuita: creare, afisare, cautare, adaugare oriunde

Operatii lista simplu inlantuita: creare, afisare, cautare, adaugare oriunde

by Dragos Schiopu

>Operatii in lista simplu inlantuita: creare,afisare,cautare,adaugare inainte primului,adaugare oriunde,stergerea primului, stergerea ultimului.

program lista;
uses crt;
type nod=^ref;
ref=record
info:integer;
leg:nod;
end;
var p,q,prim,ultim:nod;
i,n:integer;
procedure creare;
begin
write('valoarea :');
readln(n);
prim:=nil;
ultim:=nil;
while n<>0 do
begin
new(p);
p^.info:=n;
if prim=nil then
begin
p^.leg :=nil;
prim:=p;
ultim:=p;
end
else begin
p^.leg:=nil;
ultim^.leg:=p;
ultim:=p;
end;
write('valoarea :');
readln(n);
end;
end;
procedure traversare;
begin
while prim<>nil do
begin
write(' * ',prim^.info);
prim:=prim^.leg;
end;

end;
procedure cautare;
begin
while p<>nil do
if odd(p^.info) then
begin
write(' impar ',p^.info);
p:=p^.leg;
end
else p:=p^.leg;
end;
procedure adauga_inaintea_primului;
begin
new(p);
write('valoarea noua :');readln(n);
p^.info:=n;
p^.leg:=prim;
prim:=p;
end;
procedure adauga_oriunde;
begin
q:=prim;
while q^.leg^.info<>3 do
q:=q^.leg;
new(p);
write('valoarea noului nod :');
readln(n);
p^.info:=n;
p^.leg:=q^.leg;
q^.leg:=p;
end;
procedure sterge_primul;
begin
p:=prim^.leg;
dispose(prim);
prim:=p;
end;
procedure sterge_ultimul;
begin
p:=prim;
while p^.leg<>ultim do p:=p^.leg;
dispose(ultim);
p^.leg:=nil;
ultim:=p;
end;
procedure sterge_oriunde;
begin
p:=prim;
while p^.leg^.info<>5 do p:=p^.leg;
q:=p^.leg;
p^.leg:=q^.leg;
dispose(q);
end;
BEGIN
clrscr;
creare;
writeln('adaug un element inaintea primului element al listei ');
adauga_inaintea_primului;
writeln('adaug un element inaintea valorii 3 din lista');
adauga_oriunde;
cautare;readln;
sterge_primul;
sterge_ultimul;
sterge_oriunde;
writeln('lista finala: ');
traversare;
readln;
END.
{PascalZone.uv.ro}

s-ar putea sa-ti placa