unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls,Unit2;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    RadioGroup1: TRadioGroup;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  x:integer; First,Last:Key;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var item:Key;
begin
   new(item);
   item^.num:=StrToInt(Edit1.Text);
item^.data:=Edit2.Text;
if Last=nil then begin
     item^.Next:=nil;
     item^.Prev:=nil;
     First:=item;
     Last:=First;
   Memo1.Clear;
   Memo1.Lines.Add('Добавлен элемент: '+IntTostr(First^.num)+' '+First^.data);
   end else
case x of
1: begin
     item^.Next:=First;
     First^.Prev:=item;
     First:=item;
     Memo1.Lines.Add('Добавлен элемент: '+IntTostr(First^.num)+' '+First^.data);
  end;
2: begin
     item^.Prev:=Last;
     Last^.Next:=item;
     Last:=item;
     Memo1.Lines.Add('Добавлен элемент: '+IntTostr(Last^.num)+' '+Last^.data);
  end;

  end;
  Edit1.Text:='';
  Edit2.Text:='';
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
  var item:Key;
begin
if First.Next=nil then x:=3;

 if =nil then Memo1.Lines.Add('В списке нет элементов')
 else case x of
 1: begin
    Memo1.Lines.Add('Элемент: '+InttoStr(First^.num)+' '+First^.data+' удален!');
      item:=First;
      First:=First.Next;
      Dispose(item);
 end;
 2: begin
     Memo1.Lines.Add('Элемент: '+InttoStr(Last^.num)+' '+Last^.data+' удален!');
      item:=Last;
      Last:=Last.Prev;
      Last.Next:=nil;
      Dispose(item);
 end;
 //Удаление последнего элемента
 3:begin
     item:=First;
     Memo1.Lines.Add('Последний элемент: '+InttoStr(item^.num)+' '+item^.data+' удален!');
 Last:=nil;
 First:=nil;
 Dispose(item);
 end;
  end;
  
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
var item:Key;
begin
Memo1.Clear;
if First=nil then Memo1.Lines.Add('В списке нет элементов')
else begin item:=First;
  while item<>nil do begin
    Memo1.Lines.Add(Inttostr(item^.num) + ' '+item^.data);
    item:=item.Next;
  end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
x:=0;
Last:=nil;
end;

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
x:=1;
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
x:=2;
end;

end.
