Operacje na stosie

0

Możecie sprawdzić czy dobrze zrobiłem dodawanie/usuwanie/wyświetlanie na stosie oraz możecie mi pomóc z sortowaniem według pesala, bo średnio wiem jak się za to zabrać.

 
program Stack;

{$APPTYPE CONSOLE}

uses
  SysUtils;
type
  lista = ^tlista;
  tlista = record
    imie: string[20];
    nazwisko: string[30];
    wiek: byte;
    PESEL: string;
    wsk: lista;
end;
var
  pocz: lista;
  menu: integer;

procedure dodaj(var pocz:lista);
var
  nowy: lista;
begin
  new(nowy);
  writeln('Podaj imie, nazwisko, wiek i pesel');
  write('Imie: '); readln(nowy^.imie);
  write('Nazwisko: '); readln(nowy^.nazwisko);
  write('Wiek: '); readln(nowy^.wiek);
  write('Pesel: '); readln(nowy^.PESEL);
  if (pocz=nil) then nowy^.wsk:=nil else nowy^.wsk:=pocz;
  pocz:=nowy;
end;
procedure usun (var pocz:lista);
var
    del:lista;
    begin
    new (del);
    del:=pocz;
    pocz:=pocz^.wsk;
    dispose(del);
    end;
procedure wyswietl(pocz:lista); // wyswietlanie bez var!
begin
  if (pocz=nil) then writeln('Stos jest pusty!');
  while(pocz<>nil) do begin
    writeln(pocz^.imie);
    writeln(pocz^.nazwisko);
    writeln(pocz^.wiek);
    writeln(pocz^.PESEL);
    writeln;
    pocz:=pocz^.wsk;
  end;
end;
procedure wyswietl2(pocz:lista);
var
  a,b: integer;
begin
  while(pocz<>nil) do begin
    a:=length(pocz^.imie);
    b:=length(pocz^.nazwisko);
    if (b > a) then begin
      writeln(pocz^.imie);
      writeln(pocz^.nazwisko);
      writeln(pocz^.wiek);
      writeln(pocz^.PESEL);
      writeln;
    end;
    pocz:=pocz^.wsk;
  end;
end;
procedure sortowanie(var pocz:lista);
var



begin
  pocz:=nil;
  repeat
    writeln('           MENU       ');
    writeln('-------------------------');
    writeln('1. Dodaj element');
    writeln('2. Usun element ze szczytu');
    writeln('3. Wyswietl stos');
    writeln('4. Wyswietl gdy nazwisko jest dluzsze niz imie');
    writeln('5. Wyswietl posortowane wg pesel');
    writeln('6. Zakoncz');
    readln(menu);
    writeln('-------------------------');
    case (menu) of
    1: dodaj(pocz);
    2: usun(pocz);
    3: wyswietl(pocz);
    4: wyswietl2(pocz);
    5: sortowanie(pocz);
  end;
  until(menu=6);
end.
0

Jak dla mnie to chyba niekoniecznie prawidłowo używasz new i dispose.... Czytając to - to wychodzi, że nie rozumiesz idei wskaźników.

1 użytkowników online, w tym zalogowanych: 0, gości: 1