Parašė untitled· 2010 Kov. 9 18:03:52
#1
Sveiki, gal kas gali padėti su tokia užduotimi?
2. Dvejetainio medžio viršūnę aprašo toks įrašas:
type T = ...;
Medis = ^viršūnė;
viršūnė = record
INFO : T;
K, D : Medis;
end;
Sukurta procedūra medžiui trinti:
procedure Trink(P: Medis);
function ArLapas(P: Medis): boolean;
begin
ArLapas := (P^.K = nil) and (P^.D = nil);
end;
procedure TrinkLapą(var P: Medis);
begin
dispose(P); P := nil;
end;
begin
if (P^.K <> nil)
then
if ArLapas(P^.K) then TrinkLapą(P^.K) else Trink(P^.K);
if (P^.D <> nil)
then
if ArLapas(P^.D) then TrinkLapą(P^.D) else Trink(P^.D);
if ArLapas(P) then TrinkLapą(P);
end;
Tačiau procedūra veikia neteisingai: ištrinami tik lapai ir jų tėvai. Raskite klaidą ir paaiškinkite ją. Ištaisykite procedūrą, kad ji veiktų korektiškai – trintų visą medį.
Ir dar - ką reiškia „^“