od xstyler » 2. 7. 2005 10:43
previest pre/post-fixovu notaciu do binarneho vyrazoveho stromu
-=( prevody mezi jednotlivymi *fixy )=-
nejjednodussi cesta je postavit strom:
// z prefixu (na stromecek)
function Strom:PPrvek;
var
c:char;
p:PPrvek;
begin
new(p);
read(c);
p^.c:=c;
if c in ['+','-','*','/'] then
begin
p^.L:=Strom;
p^.P:=Strom;
end
else
begin
p^.L:=nil;
p^.P:=nil;
end;
Strom:=p;
end;
// z postfixu (na stromecek)
var
Z:array[1..MAX] of PPrvek; // zasobnik
xZ:integer; // pocet prvku v zasobniku
P:PPrvek;
begin
xZ:=0;
while not eof(soubor) do
begin
read(c);
new(P);
if c in ['+','-','*','/'] then // je operace
begin
P^.L:=Z[xZ-1];
P^.P:=Z[xZ];
Dec(xZ,2);
end;
else // neni operace
begin
P^.L:=nil;
P^.P:=nil;
end;
Inc(xZ); // vlozeni do zasobniku
Z[xZ]:=p;
end;
end;
[b]previest pre/post-fixovu notaciu do binarneho vyrazoveho stromu[/b]
-=( prevody mezi jednotlivymi *fixy )=-
nejjednodussi cesta je postavit strom:
// z prefixu (na stromecek)
function Strom:PPrvek;
var
c:char;
p:PPrvek;
begin
new(p);
read(c);
p^.c:=c;
if c in ['+','-','*','/'] then
begin
p^.L:=Strom;
p^.P:=Strom;
end
else
begin
p^.L:=nil;
p^.P:=nil;
end;
Strom:=p;
end;
// z postfixu (na stromecek)
var
Z:array[1..MAX] of PPrvek; // zasobnik
xZ:integer; // pocet prvku v zasobniku
P:PPrvek;
begin
xZ:=0;
while not eof(soubor) do
begin
read(c);
new(P);
if c in ['+','-','*','/'] then // je operace
begin
P^.L:=Z[xZ-1];
P^.P:=Z[xZ];
Dec(xZ,2);
end;
else // neni operace
begin
P^.L:=nil;
P^.P:=nil;
end;
Inc(xZ); // vlozeni do zasobniku
Z[xZ]:=p;
end;
end;