2013-11-02 97 views
0

我正在开发一个ADA项目。 本质上我需要做的是创建一个列表,其中我的第一个节点是主节点或塔,每个连续的节点都是比主头连接的塔。Ada - 列表清单

因此,假设我有一个像列表A - >乙 - > d - >电子 - >男,这意味着塔A连接到塔B,d,E和F

现在我还需要有一个列表来存储所有的主塔。所以假设我有A→B→D→E→F,并且我有C-> X-> Y-> Q,并且E-> P-> R,列表的列表应该是这样的:

A-> C-> E(本质上是所有主节点的列表)。

我需要使用泛型类型列表来完成此操作。

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

在此先感谢球员:)

+0

对于名单的建筑列表,看看(ADA -2005)Ada.Containers,例如John Barnes编写的第22章“Ada-2005编程”。使用Containers需要一些练习(在我看来),但是可以作为一种享受。您可能会发现双向链接列表或不确定向量或组合,是最合适的。 –

+0

哦,好的。我忘了提及我们已经被特别要求不使用Ada - 2005.我们必须使用Ada - 95.那么有什么选择呢? 基本上,一个列表需要是一个字符串列表,另一个列表是字符串列表。 – gkamani2011

+0

Yuck。这是一个让人们脱离Ada的练习吗? ...呵呵,或者,是否有针对Ada-2012的明确禁制令? :-) –

回答

1

如果你允许使用别人的阿达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"); 

+0

练习的教授笔记(http://cs.fit.edu/~ryan/cse4250/hear.html)非常明确地说明为什么不应该使用Ada 2005。 –

+0

因为练习的一部分是编写自己的通用链表,所以这个答案是无关紧要的!而且,请注意,教授并没有说不要使用Ada> = 2005;只是不要使用'Ada.Containers.Linked_Lists'。 –

0

这里是full project description - 只是如此我们知道任务是什么。

禁止使用package Ada.Containers.Doubly_Linked_Lists可被视为一种令人不安的分心。

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

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

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

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

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

+0

指令说“编写一个通用的链表包并使用它来实现图的邻接表表示来解决问题。” –