Работа с динамической памятью и указателями в системе Turbo Pascal. Мирецкий И.Ю - 16 стр.

UptoLike

Составители: 

dispose(a)
end
else begin
{удаление элемента, не являющегося первым в списке}
b^.next := a^.next;
dispose(a)
end;
exit
end
else begin b := a; a := a^.next end
end;
{процедура showqueue показывает очередь} procedure showqueue;
var a:elem; {a - текущий элемент списка}
begin
clrscr;
a:=first; writeln;
while a<>nil
do begin
writeln (a^.fio,', ',a^.age,' ');
a:=a^.next
end;
readln
end;
{тело программы}
begin
clrscr;
mark(p); {p хранит исходное состояние кучи}
first:=nil;
repeat
clrscr;
writeln('укажите операцию:');
writeln('i - поместить элемент в очередь');
writeln('d - удалить элемент из очереди');
writeln('e - завершить работу');
writeln('s - показать очередь');
readln(o);
case o of {управление очередью}
'i' : begin
n:=new(elem); {создание элемента списка}
{заполнение
"карточки" пациента}
writeln('введите Ф.И.О. пациента');
readln(n^.fio);
writeln('введите пол пациента');
readln(n^.sex);
writeln('введите адрес пациента');
readln(n^.addr);
writeln('введите возраст пациента');
readln(n^.age);
n^.next:=nil;
{элемент помещается в очередь}
if first=nil then first:=n else inspat(n);
end;
                                                           dispose(a)
                                           end

                                 else begin
                                                            {удаление элемента, не являющегося первым в списке}
                                              b^.next := a^.next;
                                                        dispose(a)
                                           end;
                            exit
                        end
               else begin b := a; a := a^.next end
   end;


                                                    {процедура showqueue показывает очередь} procedure showqueue;

   var a:elem;                                      {a - текущий элемент списка}

   begin
      clrscr;
      a:=first; writeln;
      while a<>nil
          do begin
                    writeln (a^.fio,', ',a^.age,'    ');
                    a:=a^.next
                end;
   readln
end;

                                                     {тело программы}
begin
   clrscr;
                                mark(p);            {p хранит исходное состояние кучи}
   first:=nil;
   repeat
       clrscr;
       writeln('укажите операцию:');
       writeln('i - поместить элемент в очередь');
       writeln('d - удалить элемент из очереди');
       writeln('e - завершить работу');
       writeln('s - показать очередь');
       readln(o);
       case o of           {управление очередью}
       'i' : begin
                        n:=new(elem);         {создание элемента списка}
                                                                               {заполнение "карточки" пациента}
                                           writeln('введите Ф.И.О. пациента');
                        readln(n^.fio);
                                             writeln('введите пол пациента');
                        readln(n^.sex);
                                            writeln('введите адрес пациента');
                        readln(n^.addr);
                                          writeln('введите возраст пациента');
                        readln(n^.age);
                        n^.next:=nil;
                                                                                  {элемент помещается в очередь}
                        if first=nil then first:=n else inspat(n);
                     end;