0

我正在做一个 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 (本质上是所有主要节点的列表)。

我需要使用泛型类型列表来做到这一点。

我知道这有点令人困惑。但是我该怎么办呢?艾达让我很困惑。

在此先感谢各位:)

4

2 回答 2

1

如果你被允许使用别人的 Ada 95 容器库,你可以试试Ada 95 Booch Components。如果您(被允许)这样做,请不要使用 Lists 包,而是使用 Collections:

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");

等等

于 2013-11-02T21:10:47.300 回答
1

这是完整的项目描述- 只是为了让我们知道任务是什么。

禁止使用package Ada.Containers.Doubly_Linked_Lists可以被视为无关紧要的干扰。

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

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

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

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

(我不会告诉你更多,因为我不希望你和你的教授有太多的麻烦。)

于 2013-11-04T09:49:13.250 回答