Двойным нажатием клавиши «мыши» на Форме и кнопке Button создайте соответствующие процедуры обработки событий. Пользуясь текстом модуля UnStek , наберите операторы этих процедур.
Текст модуля UnStek
unit UnStek;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
Type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Button1: TButton;
BitBtn1: TBitBtn;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
end;
Var
Form1: TForm1;
Implementation
{$R *.dfm}
Type
pSt=^zap;
zap=record
inf: integer;
adr: pSt
end ;
var // объявление глобальных переменных
pVer, // указатель вершины стека
pTek: pSt; // текуший указатель
elSt: integer; // элемент стека
procedure TForm1.FormCreate(Sender: TObject);
Begin
Memo1.Clear;
Edit1.Text:='';
pVer:=nil; // инициализировать указатель вершины
elSt:=0; // инициализировать элемент стека
end ;
procedure TForm1.Button1Click(Sender: TObject);
Begin
New (pTek); // выделить память
elSt:=StrToInt(Edit1.Text);
pTek^.inf:=elSt; // в информационную часть стека занести elSt
pTek^.adr:=pVer; // в адресную часть занести указатель на вершину
pVer:=pTek; // указатель вершины должен указывать на
// последний элемент
if elSt>=0 then // если элемент стека неотрицательный, тогда …
Begin
Edit1.Text:=''; // очистить окно редактора Edit1
Edit1.SetFocus; // передать фокус ввода редактору Edit1
End
Else
Begin
Memo1.Lines.Add('Элементы стека:'); // вывод заголовка
Repeat
Memo1.Lines.Add(#9+IntToStr(pTek^.inf)); // вывод элементов
pVer:=pTek^.adr;
Dispose (pTek); // освободить память
pTek:=pVer;
until pTek=nil ;
end ;
end ;
end .