ВУЗ:
Составители:
Рубрика:
- 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 -
Страницы
- « первая
- ‹ предыдущая
- …
- 26
- 27
- 28
- 29
- 30
- …
- следующая ›
- последняя »