Основы программирования. Динамические массивы. Списки. Ассоциативные массивы. Деревья. Хеш-таблицы - 28 стр.

UptoLike

Составители: 

30
2.5 Клиентское приложение для списка с внешним итератором
Задача. Дан список целых. Найти два наиболее близких элемента.
Решение. Для решения заведем два итератора, которые будут пробегать спи-
сок во вложенных циклах. Чтобы каждый элемент сравнивался с каждым, доста-
точно, чтобы второй итератор пробегал элементы списка от элемента, следующе-
го за тем, на который указывает первый итератор, до последнего. Обратим
внима-
ние, что для этого нам понадобится метод итератора Assign, который присваи-
вает поля L и cur одного итератора соответствующим полям другого итератора:
uses IntList;
var
L: List;
it1,it2: ListIterator;
a,b,i,s,m: integer;
begin
L := List.Create;
it1 := ListIterator.Create(L);
it2 := ListIterator.Create(L);
Randomize;
for i:=1 to 10 do
L.AddFirst(Random(100));
writeln(L1.ToString);
m:=MaxInt;
while not it1.Eol do
begin
it2.Assign(it1);
it2.Next;
while not it2.Eol do
begin
s:=abs(it1.Data-it2.Data);
if s<m then
begin
m:=s;
a:=it1.Data;
b:=it2.Data;
end;
it2.Next;
end;
it1.Next;
end;
writeln(a,' ',b);