Формирование кольца

Рассмотрите процедуру формирования кольца. Для работы этой процедуры заводятся две локальные переменные типа TypeCircle для хранения адресов промежуточного и завершающего звена списка, последним оператором преобразуемого в кольцо.

Procedure FofmK(Var u: TypeCircle);

Var

x, y: TypeCircle;

i, N: integer;

Begin

write('Введите количество звеньев кольца: ');

readln(N);

for i:= 1 to N do

begin

new(x); {выделяем память для хранения нового элемента кольца}

write('Введите данные в звено: ');

readln(i);

x^.Data:= i; {заносим информацию в поле данных}

if u=nil {если кольцо еще не создано}

then

u:= x {то указатель первого элемента ставим на новый элемент}

else

y^.Next:= x; {присоединяем новый элемент к последнему элементу}

y:= x; {переносим указатель у на последний элемент}

end;

x^.Next:= u; {преобразуем получившийся список в кольцо}

End;

Над кольцом определены три операции: занесение элемента в кольцо, извлечение элемента из кольца и обход кольца.

Задание. Составьте программу, содержащую две процедуры: процедуру занесения элемента в кольцо и процедуру извлечения элемента из кольца по какому-либо условию. (Можно воспользоваться предыдущим текстом программы.)

Обход кольца

Для того чтобы обойти кольцо и вывести на экран содержащуюся в нем информацию, необходимо в локальной переменной типа TypeCircle запомнить адрес первого выводимого элемента. В этом случае можно избежать повторения и зацикливания программы. Вывод данных можно начинать с любого элемента кольца; это зависит от адреса первого элемента, переданного в процедуру обхода.

Рассмотрите процедуру обхода кольца.

Procedure PrintК(u: TypeCircle);

Var

x: TypeCircle;

Begin

x:= u;

repeat

write(x^.Data,' ');

x:= x^.Next;

until x=u;

readln;

End;

Задание. Дополните предыдущую программу процедурой обхода кольца.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: