Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 18_Организация памяти и структур данных.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
140.29 Кб
Скачать

If Pempty(Poinsv,Poinf) Then

begin

writeln('Очередь пуста');

exit

end;

el:=Cha[Poinf];

Poinf:=Poinf+1

end;

Создавая очередь с помощью массива, следует, что состояние очереди может не соответствовать состоянию массива ее описывающего, поскольку при удалении элемента из очереди, он не удаляется из массива, а просто меняется значение указателя Poinf.

Рассмотрим процесс моделирования и обработки очереди на конкретном примере.

Пример. Постройте очередь из 5-ти символов - ‘a’, ‘b’, ‘c’, ‘d’, ‘e’. Выведите из очереди два символа ‘a’, ‘b’ и добавьте в конец очереди символ ‘z’.

Const maxs=6;

Type och=array[1..6] of char;

Var I,Poinsv,Poinf:integer;

Cha:och;

el:char;

{процедура добавления элементов в очередь}

Procedure AddCH(s:char; Var Cha:och; Var Poinsv:integer);

Begin

if Poinsv>maxs then

begin

writeln('Переполнение очереди');

exit

end;

Cha[poinsv]:=el;

Poinsv:=Poinsv+1

End;

{функция проверки условия пустой очереди}

Function Pempty(PoinSv,PoinF:integer):boolean;

Begin

if Poinsv=PoinF then Pempty:=true

else Pempty:=false

end;

{процедура вывода элементов из очереди}

Procedure EdelCH (Var CHa:och; Var Poinsv,Poinf:integer; Var el:char);

Begin

If Pempty(Poinsv,Poinf) Then

begin

writeln('Очередь пуста');

exit

end;

el:=Cha[Poinf];

Poinf:=Poinf+1

end;

BEGIN {основная программа}

Poinsv:=1;

Poinf:=1;

{добавление элементов в очередь}

for i:=1 to 5 do

begin

Write('EO='); readln(el);

Addch(el,Cha,Poinsv)

end;

{удаление из очереди двух элементов}

For i:=1 to 2 do

begin

EdelCh(Cha,Poinsv,Poinf,el);

Writeln('el=',el);

end;

writeln('nel=');

readln(el);

{добавление элемента в конец очереди}

Addch(el,Cha,Poinsv)

END.

Рассмотрим порядок выполнения алгоритма задачи:

Построение очереди из 5-ти элементов имеем указатель на элемент очереди Poinf:=1, указатель на свободное место в массиве Poinsv:=6, содержимое массива Cha:

индекс

1

2

3

4

5

6

элементы массива

‘a’

‘b’

‘c’

‘d’

‘e’

элементы очереди

‘a’

‘b’

‘c’

‘d’

‘e’

Удаление из очереди первых двух элементов: Poinf:=3, Poinsv:=6, содержимое массива Cha:

индекс

1

2

3

4

5

6

Элементы массива

‘a’

‘b’

‘c’

‘d’

‘e’

Элементы череди

‘c’

‘d’

‘e’

Добавление одного элемента в конец очереди: Poinf:=3, Poinsv:=7, содержимое массива Cha:

индекс

1

2

3

4

5

6

элементы массива

‘a’

‘b’

‘c’

‘d’

‘e’

‘z’

Элементы очереди

‘c’

‘d’

‘e’

‘z’