Ada - 列表清单

时间:2013-11-02 18:50:16

标签: list generics ada

我正在研究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(基本上是所有主节点的列表)。

我需要使用通用类型列表来执行此操作。

我知道这有点令人困惑。 但我该怎么办呢?阿达对我这么困惑。

先谢谢你们:)

2 个答案:

答案 0 :(得分:1)

如果您被允许使用其他人的Ada 95容器库,您可以尝试Ada 95 Booch Components。如果您(被允许)这样做,请不要使用列表包,而是使用集合:

with BC.Indefinite_Unmanaged_Containers.Collections;
procedure Towers is

   package Abstract_Main_Nodes
   is new BC.Indefinite_Unmanaged_Containers (String);
   package Main_Nodes is new Abstract_Main_Nodes.Collections;

   package Abstract_All_Main_Nodes
   is new BC.Indefinite_Unmanaged_Containers (Main_Nodes.Collection,
                                              "=" => Main_Nodes."=");
   package All_Main_Nodes is new Abstract_All_Main_Nodes.Collections;

end Towers;

with Towers; use Towers;
procedure Main is

   Main_Tower : Main_Nodes.Collection;
   Main_Towers : All_Main_Nodes.Collection;

begin

   Main_Nodes.Append (Main_Tower, "A");
   Main_Nodes.Append (Main_Tower, "B");
   Main_Nodes.Append (Main_Tower, "D");
   Main_Nodes.Append (Main_Tower, "E");
   Main_Nodes.Append (Main_Tower, "F");
   All_Main_Nodes.Append (Main_Towers, Main_Tower);

   Main_Nodes.Clear (Main_Tower);
   Main_Nodes.Append (Main_Tower, "C");

答案 1 :(得分:1)

这是full project description - 我们知道这是什么任务。

使用package Ada.Containers.Doubly_Linked_Lists的禁令可被视为一种相关的分心。

我注意到的一件事,可能会简化任务,就是没有提及任何通信链接被删除/消失。

问题描述的另一个很好的细节是没有性能要求。

您的抽象数据结构应该能够处理的唯一任务是:

  • 添加从一个节点到另一个节点的方向链接。
  • 回答是否存在从一个节点到另一个节点的方向链接。

(我不会再告诉你更多,因为我不希望你与你的教授相处太多麻烦。)