Witam,
mam taki kod:
program test;
type
plista = ^lista;
lista = record
id: integer;
imie: string[40];
nast: plista;
end;
function dodaj_koniec(element: plista; imie:string):plista; {dodaje element na koniec listy}
var nowyElement: plista;
begin
new(nowyElement);
nowyElement^.id:=1;
nowyElement^.imie:=imie;
nowyElement^.nast:=nil;
if element = nil then begin
element:=nowyElement;
end
else begin
element:=element^.nast;
element:=nowyElement;
end;
dodaj_koniec:=element;
end;
procedure print(element: plista);
begin
repeat
writeln(element^.imie);
element:=element^.nast;
until element=nil;
end;
var glowa, element: plista;
begin
glowa:=nil;
element:=nil;
glowa:=element;
element:=dodaj_koniec(element, 'adam');
element:=dodaj_koniec(element, 'tomek');
element:=dodaj_koniec(element, 'asdf');
print(glowa);
readln;
end.
dlaczego to nie działa?
Na początku ustawiam głowa jako element. Chcę, aby głowa wskazywała na pierwszy element cały czas. Lista rośnie poprzez wskaźnik element, a aby ją odczytać - zaczynam od pierwszego elementu (czyli głowa).
Niestety wypisanie glowa^.nast kończy się błędem.
Proszę o pomoc.
pozdrawiam.