我使用“Indefinite_Doubly_Linked_Lists”列表在 Ada 中编写了一堆通用数字。
弹出和推送操作是通过 append 和 delete_last 实现的,但对于排序方法,我需要访问列表的各个项目。
我确实制定了一种仅使用追加/前置 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;
如何从泛型类型列表中访问单个元素(或迭代)?