Kod mi się odpala, lecz jeśli dodaje do kolejki pierwszy element to gdy wyświetlam nie wiem dlatego mam dwie pozycje. Czego może to być wina?
Jan; Kowalski; wiek:18; pesel:12345678963 ; ; wiek:0; pesel:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
lista = ^tlista;
tlista = record
imie: string[20];
nazwisko: string[30];
wiek: byte;
pesel: string;
wsk: lista;
end;
var
pocz, kon: lista;
menu: integer;
procedure dodaj(var a:lista; var b:lista);
var
nowy:lista;
begin
new(nowy);
write('Podaj imie: ');
readln(nowy^.imie);
write('Podaj nazwisko: ');
readln(nowy^.nazwisko);
write('Podaj wiek: ');
readln(nowy^.wiek);
write('Podaj pesel: ');
readln(nowy^.pesel);
if (a = nil) then begin
new(a);
a:=nowy;
a^.wsk:=nil;
end;
if (b = nil) then begin
new(nowy);
b:=nowy;
a^.wsk:=b;
b^.wsk:=nil;
end;
if (b <> nil) then begin
b^.wsk:=nowy;
new(b);
b:=nowy;
b^.wsk:=nil;
end;
end;
procedure usun(var a:lista);
var
del:lista;
begin
if (a = nil) then
writeln('Nie ma danych w kolejce!') else
begin
del:=a;
a:=a^.wsk;
dispose(del);
end;
end;
procedure wyswietl(a:lista);
begin
if (a = nil) then writeln('Nie ma danych w kolejce!');
while(a <> nil) do begin
write(a^.imie,'; ',a^.nazwisko,'; wiek:',a^.wiek,'; pesel:',a^.pesel);
writeln;
a:=a^.wsk;
end;
end;
begin
pocz:=nil;
kon:=nil;
repeat
writeln(' MENU ');
writeln('-------------------------');
writeln('1. Dodaj element na koniec kolejki.');
writeln('2. Usun element kolejki.');
writeln('3. Wyprowadz zawartosc kolejki na ekran.');
writeln('9. Koniec');
readln(menu);
writeln('-------------------------');
case (menu) of
1: dodaj(pocz, kon);
2: usun(pocz);
3: wyswietl(pocz);
end;
until(menu=9);
end.