Implementuje listę podwieszaną w pascalu.(niestety nie ma wielu informacji na ten temat) W zamyśle to lista studentów i ich książek.O ile lista dwukierunkowa studentów działa bez zarzutu,to jeżeli próbuje dodać do któregoś studenta pierwszą książkę,to na pierwszy rzut oka wszystko działa poprawnie,jednak kiedy próbuje wyświetlić studentów i ich książki to w dalszym ciągu pokazuje mi komunikat który stwierdza,że nie przypisano książek do studenta.Zamieszczam część kodu odpowiedzialną za dodanie książki.(GUARD to zmienna przechowująca wskaźnik na głowe i ogon listy dwukierunkowej)

 function getBook():Pbook;
var
b:Pbook;
begin
 new(b);
 Writeln('tytul');
 readln(b^.title);
 b^.next:=nil;
 getBook:=b;
end;

procedure addBook(var guard:velem);
var
s:Pbook;
Sname:string[20];
begin
 new(s);
 writeln('ktoremu studentowi chcesz dopisać ksiazke');
 readln(Sname);
 s:=returnLibrary(sname,guard);

 if(s=nil)then
 begin
 s:=getbook();
 end else
 begin
  while(s<>nil)do
   begin
    s:=s^.next;
   end;
  s^.next:=getBook();
 end;
end;

function returnLibrary(n:string;var guard:velem):pbook;
var
p:Pstudent;
b:Pbook;
begin
 p:=guard.head;
 while(p<>nil)do
 begin

  if(p^.name=n)then
  begin
   b:=p^.books;
   returnLibrary:=b;
  end;
   p:=p^.next;
 end;
end;   

byłbym wdzięczny gdyby ktoś odnalazł błąd.