私は、「Indefined_Douly_Linked_Lists」リストを使用して、Ada で一般的な数値のスタックをプログラムしました。
ポップ & プッシュ操作は、append と delete_last で実装されますが、並べ替え方法では、リストの個々の項目にアクセスする必要があります。
私は、append/prepend delete_last/first のみを使用してソート方法を考え出しましたが、結果はエレガントとはほど遠い (そしておそらく正しくない)
procedure sort is
elem1: Item;
elem2: Item;
--l is a package-private Indefinite_Doubly_linked_lists'
begin
if Integer(MyList.Length(l)) > 1 then
for i in 0 .. Integer(MyList.Length(l))-1 loop
for j in 0 .. Integer(MyList.Length(l))-1 loop
--Inner sort loop
elem1 := MyList.Element(l.first);
l.Delete_First;
elem2 := MyList.Element(l.first);
l.Delete_First;
if elem1>elem2 then
l.Prepend(elem1);
l.Append(elem2);
else
l.Prepend(elem2);
l.Append(elem1);
end if;
end loop;
end loop;
end if;
end;
ジェネリック型のリストから個々の要素にアクセス (または反復) するにはどうすればよいですか?