我正在研究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(基本上是所有主节点的列表)。
我需要使用通用类型列表来执行此操作。
我知道这有点令人困惑。 但我该怎么办呢?阿达对我这么困惑。
先谢谢你们:)
答案 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
的禁令可被视为一种相关的分心。
我注意到的一件事,可能会简化任务,就是没有提及任何通信链接被删除/消失。
问题描述的另一个很好的细节是没有性能要求。
您的抽象数据结构应该能够处理的唯一任务是:
(我不会再告诉你更多,因为我不希望你与你的教授相处太多麻烦。)