Jak byste odstranily duplicity v obousmernem seznamu pri neserazenych datech ?
type UkPrvek = ^Prvek;
Prvek = record
info: real;
predchudce, naslednik: UkPrvek
end;
ObousmerSeznam = record
zacatek: UkPrvek;
konec: UkPrvek
end;
procedure init(var s: ObousmerSeznam);
begin
s.zacatek:=nil;
s.konec:=nil;
end;
procedure pridejPrvek(var s: ObousmerSeznam; hodnota: real);
var novy: UkPrvek;
begin
new(novy);
novy^.info:=hodnota;
if s.zacatek<>nil then begin
s.zacatek^.predchudce:=novy;
novy^.naslednik:=s.zacatek;
s.zacatek:=novy;
end else begin
novy^.predchudce:=nil;
novy^.naslednik:=nil;
s.zacatek:=novy;
s.konec:=novy
end
end;
function vratPocetPrvku(s: ObousmerSeznam) : word;
var aktualni: UkPrvek;
begin
vratPocetPrvku:=0;
aktualni:=s.zacatek;
while aktualni<>nil do begin
aktualni:=aktualni^.naslednik;
inc(vratPocetPrvku);
end
end;
procedure kontrola(s: ObousmerSeznam);
var aktualni: UkPrvek;
begin
aktualni:=s.zacatek;
while (aktualni<>nil) do begin
write(aktualni^.info:2:2,' | ');
aktualni:=aktualni^.naslednik;
end;
end;
procedure odstranDuplicity(var s: ObousmerSeznam);
begin
end;
var s: ObousmerSeznam;
begin
init(s);
pridejPrvek(s,33);
pridejPrvek(s,22);
pridejPrvek(s,22);
pridejPrvek(s,33);
pridejPrvek(s,22);
pridejPrvek(s,12);
kontrola(s);