Witam
Od kilku godzin stoje w miejscu z programem.
Ma byc to słownik wyrazów opary na drzewie. W każdym węźle ma być lista liter. Odpowiednio od początku drzewa (korzeń) do końca danej galezi tworzy wyraz. Wygląda to mniej więcej tak
PROGRAM slownik;
USES crt;
TYPE
Welement=^element; {węzeł drzewa}
WlistaLiter=^listaLiter; {lista jednokierunkowa}
Wznaczenie=^znaczenie;
znaczenie = record
wyraz:string;
NastepneZnaczenie:Wznaczenie;
end;
listaLiter = record
nastepny_element:Welement;
litera:char;
next:WlistaLiter;
end;
element = record
id:char;
rodzic:Welement;
lista_liter:WlistaLiter;
end;
var
wsk:Welement;
k:byte;
{tworzy liste jedno kierunkową liter w kazdym węźle drzewa}
procedure wstawLitere(var lista:WlistaLiter;var node:Welement; lit:char);
var
nowy:WlistaLiter;
begin
if lista=nil then begin
new(nowy);
nowy^.next:=nil;
nowy^.litera:=lit;
nowy^.nastepny_element:=nil;
lista:=nowy;
end else begin
new(nowy);
nowy^.litera:=lit;
nowy^.next:=nil;
nowy^.next:=lista;
nowy^.nastepny_element:=nil;
lista:=nowy;
end;
end;
procedure wstawElement(var node:Welement; lit:char);
begin
{tworzenie pierwszego węzła root}
if node=nil then begin
new(node);
node^.lista_liter:=nil;
node^.id:=lit;
wstawLitere(node^.lista_liter,node,lit);
end
else
begin
wstawElement(node^.lista_liter^.nastepny_element,lit);
end;
end;
procedure wstawSlowo(var slownik:Welement; slowo:string; znaczenie:string);
var
S:Welement;
i:byte;
nowy:Welement;
begin
for i:=1 to length(slowo) do wstawElement(slownik,slowo[i]);
{po przejsciu calego fora i zatrzymaniu sie na ostatniej literze
zapisujemy znaczenie rozłożonego zdania do listy jedno kierunkowej znaczenie}
end;
procedure pokazListe(var f:WlistaLiter);
begin
while f <> nil do
begin
writeln(f^.litera);
f:=f^.next;
end;
end;
procedure pokazSlownik(var node:Welement);
begin
if node <> nil then begin
pokazListe(node^.lista_liter);
pokazSlownik(node^.lista_liter^.nastepny_element);
end;
end;
BEGIN
clrscr;
writeln(MemAvail);
wstawSlowo(wsk,'cd','aa');
wstawSlowo(wsk,'xd','aa');
pokazSlownik(wsk);
writeln(MemAvail);
readln;
END.
Jak widać na powyższym rysunku, każdy węzeł drzewa zawiera listę, która zawiera kolejne litery słowa. Numer stanowi poziom drzewa. Trochę jestem już zamieszany, ponieważ program się wysypuje. Sam już nie wiem co jest źle co dobrze :P
Jednym sałowem za długo już go męcze ;/
Prosiłbym o pomoc w samej strukturze dodawania słowa. Nie jestem pewien czy rekordy wskaźników są dobre..