Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

пустой кольцевой список

Работа добавлена на сайт samzan.net:


Билет 17. Кольцевые списки.

Кольцевые списки, т.е. списки, у которых первый и последний элементы связаны непосредственной связью. Такие списки позволяют осуществлять просмотр (доступ к любому элементу) не только от головы списка, но и от любого элемента списка. При создании кольцевого списка обычно сначала создается "пустой кольцевой список", у которого имеется один элемент, указывающий сам на себя (замкнутый в кольцо). Остальные элементы включаются в этот список друг за другом. Проиллюстрируем работу с кольцевым двунаправленным списком на примере программы, вычисляющей кратчайший путь между станциями кольцевой линии метро.

       program RING_METRO; {Кольцевая линия Московского метро}

       type link=^nest;nest=record forw,back:link;inf:string end;

       var r,r1,start:link;f:text;c,c1,c2:string;dir:Boolean;L:byte;

       procedure insert(el1,el2:link);{вставка el2 после el1}

           begin el2^.forw:=el1^.forw;el2^.back:=el1;el1^.forw^.back:=el2;el1^.forw:=el2;

           end{insert};

       procedure dir_path(var d:Boolean;s1,s2:string);{направление}

       var g:link;j1,j2:byte;er1,er2:Boolean;

           begin j1:=0;j2:=0;g:=start;er1:=false;er2:=false;

            repeat g:=g^.forw;  if g^.inf=s1   then

              repeat g:=g^.forw;j1:=j1+1;er1:=(g^.inf=s1);d:=(2*j1<L);

              until (g^.inf=s2) or (g^.inf=s1)  else  if g^.inf=s2   then

              repeat g:=g^.forw;j2:=j2+1;er2:=(g^.inf=s2);d:=(2*j2>L);

              until (g^.inf=s1) or (g^.inf=s2);

            until (g=start) or (g^.inf=s1) or (g^.inf=s2);if er1 or er2 then

   begin write('Ошибка в названии ');

           if er1  then write('конечной') else write('начальной');writeln(' станции');halt

   end; if j1+j2=0 then begin writeln('Ошибка в названиях станций');halt end

           end {dir_path};

       procedure write_path(d:Boolean;s1,s2:string);{кратчайший путь}

       var p:link;

           begin p:=start; while not(p^.inf=s1) do p:=p^.forw;

             repeat writeln(p^.inf);if d then  p:=p^.forw else p:=p^.back;

             until (p^.inf=s2) ; writeln(p^.inf);

           end {write_path};

       BEGIN writeln('КОЛЬЦЕВАЯ  ЛИНИЯ  МОСКОВСКОГО МЕТРО');

             new(start);r:=start;r^.forw:=r;r^.back:=r;assign(f,'names_st');{$I-}reset(f);{$I+};

            if IOResult<>0 then begin writeln('Не найден файл names_st');halt end;

             L:=1;readln(f,r^.inf);while not eof(f) do{создание кольца }

             begin readln(f,c);new(r1);insert(r,r1);r1^.inf:=c;r:=r1;L:=L+1 end;

             writeln('Задайте начальную и конечную станции:');    readln(c1);readln(c2);            dir_path(dir,c1,c2); writeln('Кратчайший путь:');write_path(dir,c1,c2);

       END{ring_metro}.

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

program z_433_17;

program Z433_17;

uses Z433_17;

Var a:matr;

max,min,eps:real;

i,j:integer;

Begin

for i:=1 to n do

for j:=1 to t do

readln(a[i,j]);

readln(eps);

max(a,max);

min(a,min);

if abs(max-min)<eps then Begin

for i:=1 to n do

for j:=1 to t do

if a[i,j]<0

then a[i,j]:=abs(a[i,j]); end;

for i:=1 to n do

for j:=1 to t do

writeln(a[i,j]);

end.

unit Z433_17;

interface

Const n=5;

Const m=6;

Type matr=array[1..n,1..m]of real;

procedure max(a:matr;Var max:real);

procedure min(a:matr;Var min:real);

implementation

procedure max(a:matr;Var max:real);

Var i,j:integer;

Begin

for i:=1 to n do

for j:=1 to m do

if a[i,j]<0 then max:=abs(a[i,j]);

for i:=1 to n do

for j:=1 to m do

if a[i,j]<0 and abs(a[i,j])<max

then max:=abs(a[i,j]);

end;

procedure min(a:matr;Var min:real);

Var i,j:integer;

Begin

for i:=1 to n do

for j:=1 to m do

if a[i,j]>0 then min:=a[i,j];

for i:=1 to n do

for j:=1 to t do

if a[i,j]>0 and abs(a[i,j])<min

then min:=abs(a[i,j]);

end;

end.




1. Звіт захищено 20р
2. то смысле. Человек имеющий деньги но не имеющий товар приобретает необходимый ему товар для удовлетворен
3. Видеоматериалы Глоссарий Персоналии Нормативные правовые акты Приложения
4. Электротехника и электроника Выполнил студент группы 5 ЭН ~ Малинин М
5. Насильственное преступное поведение включающее в себя- а физическое насилие убийство и причинение вреда
6. Лабораторна робота 5 Проведення обчислень в MS Excel Рівне ~ 2007 Лаборато
7. Поговорим о вежливости Цели- формировать навыки вежливого общения учить детей употреблять
8. Работа консультанта с клиентами в состоянии горя
9. Опасная (аварийная) ситуация
10. Предмет метод и задачи статистики
11. 2014 учебный год ОЧНОЕ отделение
12. предложение актуальное членение интонация ориентация на участников речи Информативные ~ описание по
13. Город- Москва Пожелания к будущей работе Должность- менед
14. Терроризм
15. вариант ответа наиболее соответствующий вашему мнению
16. Вариант 1 ЗАВДАННЯ 1 Прочитай текст
17. это повседневная деятельность и отдых способ существования человека
18. тематика 1 курс 2012 ~ 2013 уч
19. Характеристика педагогических средств восстановления у спортсменов
20. Реферат- Субъекты трудового права