Динамические структуры данных. Задание практикума. Язык Паскаль. Вылиток А.А - 28 стр.

UptoLike

- 28 -
Q.rear.next:= nil
end; {enqueue}
procedure dequeue(var Q: queue; var x:elemtype);
{взять из очереди Q элемент и присвоить х}
var p:link;
begin
x:= Q.front.next.elem;
p:= Q.front;
Q.front:= Q.front.next;
dispose(p)
end; {dequeue}
Пусть в основной программе описаны переменные: Zочередь целых
чисел, yцелое. На рисунке 2а показан результат последовательного
применения команд init_queue(Z), enqueue(Z,1), enqueue(Z,2),
dequeue(Z,y). На рисунке 2б подробно изображён процесс выполнения
последней команды. Как видим, после исключения из очереди единица
оказалась в поле elem заглавного звена, перестав быть частью очереди.
При необходимости контролировать корректность использования
очереди во время отладки программы, в процедуру dequeue можно добавить
обращение к процедуре error при попытке взять элемент из пустой очереди.
Примеры задач с решениями
В задачах 1-8 используются списки без заглавного звена при следующем
их описании:
type link=node; { ссылка на звено }
elemtype = … {подходящий для задачи тип элементов};
node= record {звено состоит из двух полей:}
elem: elemtype; {элемент списка}
next: link {ссылка на следующее звено}
end;
list=link; {список задаётся ссылкой на звено }
Задача 1. Описать процедуру create(L), которая создаёт список L
из строки
текстового файла input.
Решение
procedure create(var L:list);
{создает список из символов строки текстового файла
input; elemtype=char}
  Q.rear↑.next:= nil
 end; {enqueue}

procedure dequeue(var Q: queue; var x:elemtype);
{взять из очереди Q элемент и присвоить х}
var p:link;
 begin
  x:= Q.front↑.next↑.elem;
  p:= Q.front;
  Q.front:= Q.front↑.next;
  dispose(p)
 end; {dequeue}


      Пусть в основной программе описаны переменные: Z – очередь целых
чисел, y – целое. На рисунке 2а показан результат последовательного
применения команд init_queue(Z), enqueue(Z,1), enqueue(Z,2),
dequeue(Z,y). На рисунке 2б подробно изображён процесс выполнения
последней команды. Как видим, после исключения из очереди единица
оказалась в поле elem заглавного звена, перестав быть частью очереди.
      При необходимости контролировать корректность использования
очереди во время отладки программы, в процедуру dequeue можно добавить
обращение к процедуре error при попытке взять элемент из пустой очереди.



                   Примеры задач с решениями

      В задачах 1-8 используются списки без заглавного звена при следующем
их описании:
type link=↑node; { ссылка на звено }

elemtype = … {подходящий для задачи тип элементов};
node= record           {звено состоит из двух полей:}
       elem: elemtype; {элемент списка}
       next: link      {ссылка на следующее звено}
      end;
list=link; {список задаётся ссылкой на звено }


Задача 1. Описать процедуру create(L), которая создаёт список L из строки
текстового файла input.
                                Решение
procedure create(var L:list);
{создает список из символов строки текстового файла
                               input; elemtype=char}


                                  - 28 -