4.3 Динамические структуры данных
____________________________________________________________________
program queue; // queue означает по английски очередь
{$mode objfpc}{$H+} uses
CRT, FileUtil; type
PQueue = ^Element; // указатель
Element = record // структура записи
data : integer; // содержательная часть очереди next : PQueue; // ссылка на следующий элемент end;
TQueue = record // структура для реализации очереди
first: PQueue; // указатель, указывает на первый элемент очереди last: PQueue; // указатель, указывает на последний элемент очереди end;
{============================================= } procedure Put_Que(ELEM: integer; var Que: TQueue);
{============================================= }
var ukaz: PQueue; // временный указатель
begin
if (Que.last = nil) then
{Если очередь пуста, то указатели на первый и последний элемент будут совпадать}
begin
{Выделяем память для нового элемента}
Que.last:= New(PQueue);
Que.first:= Que.last; // Приравниваем указатели
Que.last^.data:= ELEM; // записываем данные