unit Unit31;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Memo1: TMemo;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  uos = ^tos;
  tos = record
    text : string[55];
    dalsi : uos;
  end;

var
  Form1: TForm1;
  p : uos;
  zac : uos = nil;
  s : string[55];


implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
  var p:uos;
begin
  p := zac;
  memo1.lines.clear;
  while p<>nil do
    begin
      memo1.lines.add(p^.text);
      p:=p^.dalsi;
    end;
end;

procedure pridej(var p:uos);
  begin
    if p=nil then
    begin
      new(p);
      p^.dalsi:=nil;
      p^.text:=inputbox('zadani','zadejte hodnotu:','');
    end else pridej(p^.dalsi);
  end;

procedure smazatk(var p:uos);
  begin
    if p^.dalsi=nil then begin
        dispose(p);
        p:=nil;
      end else smazatk(p^.dalsi);
  end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  pridej(zac);
  Button1Click(Sender);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  if zac<>nil then smazatk(zac);
  Button1Click(Sender);
end;

procedure TForm1.Button3Click(Sender: TObject);
var p:uos;
begin
  if zac<>nil then
  begin
    p:=zac;
    zac:=p^.dalsi;
    dispose(p);
  end;
  Button1Click(Sender);
end;

procedure prideja(var p:uos);
var q:uos;
begin
  if p=nil then
    begin
      new(p);
      p^.dalsi:=nil;
      p^.text:= s ;
      exit;        {opusteni procedury}
    end;
  if s<p^.text then begin
      new(q);
      q^.dalsi:=p^.dalsi;
      q^.text :=p^.text;

      p^.dalsi:=q;
      p^.text:= s ;
    end else prideja(p^.dalsi);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  s:=inputbox('zadani','zadejte hodnotu:','');
  prideja(zac);
  Button1Click(Sender);
end;

end.