Recursion Ada-遍历列表-我应该使用什么方法?

Recursion Ada-遍历列表-我应该使用什么方法?,recursion,ada,dijkstra,breadth-first-search,Recursion,Ada,Dijkstra,Breadth First Search,我正在做一个ADA项目。基本上,我创建了一个列表和一个列表列表 假设我有一个类似于a->B->D->E->F的列表,这意味着a塔与B塔、D塔、E塔和F塔相连 现在我还需要一个列表来存储所有的主塔。因此,假设我有A->B->D->E->F,我有C->X->Y->Q和E->P->R,列表列表应该如下所示: A->C->E(基本上是所有主要节点的列表)。 如上所述,我有一个列表及其连接。现在我需要遍历这些列表,看看是否可以建立连接。例如:我有A->B->D->E->F,我有C->X->Y->Q和E->

我正在做一个ADA项目。基本上,我创建了一个列表和一个列表列表

假设我有一个类似于a->B->D->E->F的列表,这意味着a塔与B塔、D塔、E塔和F塔相连

现在我还需要一个列表来存储所有的主塔。因此,假设我有A->B->D->E->F,我有C->X->Y->Q和E->P->R,列表列表应该如下所示:

A->C->E(基本上是所有主要节点的列表)。 如上所述,我有一个列表及其连接。现在我需要遍历这些列表,看看是否可以建立连接。例如:我有A->B->D->E->F,我有C->X->Y->Q和E->P->R。如果问我A->R,可能的答案应该是真的。因为A->E->R。
我的疑问是我应该使用什么方法?BFS?递归?什么是最好的?

嵌套
for/of
循环?大概是这样的:

Function Exists( Target, Source : Node ) return boolean is
begin
    if Target = Source then
        return True;
    else
        for List of Source loop
            for Item of List loop
                if Item = Target then
                    return True;
                end if;
            end loop;
        end loop;
    end if;

    return false;
end Exists;
或者,如果使用容器的向量,则有以下函数:

 function Contains
   (Container : Vector;
    Item      : Element_Type) return Boolean;
您可以这样申请:

Package Inner_List is new Ada.Containers.Indefinite_Vectors(
                    Index_Type   => Positive,
                    Element_Type => Integer
                     );
Package Outer_List is new Ada.Containers.Indefinite_Vectors(
                    Index_Type   => Positive,
                    Element_Type => Inner_List.Vector,
                    "="          => Inner_List."="
                     );

Function Exists( Item : Integer; List : Outer_List.Vector ) return boolean is
begin
    for Items of List loop
        if Items.Contains(Item) then
            return true;
        end if;
    end loop;

    return false;
End Exists;

看起来很有用。这里的场景是,我使用一个通用列表作为列表。我已经定义了它。这是任务的一部分。所以我有一个列表,包含所有的主塔,每个塔都有自己的连接列表。所以我怀疑如果我打开A->B->C->。。。我到达Bm,然后我需要遍历B的所有连接,以此类推。正确吗?Shark8:虽然这里欢迎家庭作业帮助请求,只要它是预先提出的——就像gkamani2011一样——但一个so答案应该有助于引导提问者找到答案,而不是提供大部分家庭作业解决方案。我只是说,鉴于OP需要使用18年前的Ada方言,我认为这个答案将提供指导而不是解决方案。。。