List 如何在Ada中创建二维链表
对于我正在处理的项目,我希望使用Ada.Collections.Doubly_Linked_list创建包含字符串的2d(列表列表)。在没有任何第三方库的情况下,我很难弄清楚如何使这项工作正常进行。感谢您的帮助 我同意@Rich和@trashgood的评论,但还是举了一个小例子: main.adbList 如何在Ada中创建二维链表,list,data-structures,nested,ada,List,Data Structures,Nested,Ada,对于我正在处理的项目,我希望使用Ada.Collections.Doubly_Linked_list创建包含字符串的2d(列表列表)。在没有任何第三方库的情况下,我很难弄清楚如何使这项工作正常进行。感谢您的帮助 我同意@Rich和@trashgood的评论,但还是举了一个小例子: main.adb with Ada.Text_IO; use Ada.Text_IO; with Ada.Containers; use Ada.Containers; with Ada.Containers.
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Containers; use Ada.Containers;
with Ada.Containers.Doubly_Linked_Lists;
with Ada.Containers.Indefinite_Doubly_Linked_Lists;
procedure Main is
-- Inner list (Strings are indefinite types).
package L_Strings is
new Indefinite_Doubly_Linked_Lists (String);
use L_Strings;
-- Outer list.
package L_L_Strings is
new Doubly_Linked_Lists (L_Strings.List);
use L_L_Strings;
-- Cursors for pointing to elements in either lists.
LC : L_Strings.Cursor;
LLC : L_L_Strings.Cursor;
-- Create an empty outer list.
LLS : L_L_Strings.List := L_L_Strings.Empty_List;
begin
-- Add two empty inner lists to the outer list.
LLS.Append (L_Strings.Empty_List);
LLS.Append (L_Strings.Empty_List);
-- Add some strings to the first inner list (of strings).
LLC := First (LLS);
LLS (LLC).Append("This");
LLS (LLC).Append("is");
LLS (LLC).Append("a");
-- Add some strings to the second inner list (of strings).
LLC := Next (LLC);
LLS (LLC).Append("nested");
LLS (LLC).Append("linked");
LLS (LLC).Append("list");
-- Loop over the elements of the outer and inner list.
for Outer_Elem of LLS loop
for Inner_Elem of Outer_Elem loop
Put (Inner_Elem & " ");
end loop;
New_Line;
end loop;
end Main;
输出
This is a
nested linked list
分享你的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请参见:因为
String
是一种不确定类型,请检查并将您的问题包括在内,以显示您遇到的任何问题。如果有人甚至没有用MCVE或至少任何代码行提出实际的代码问题,请提供答案,我非常不同意。泛型实例化在InterWeb、Ada.Containers以及字符串操作中都有很好的文档记录。一个简单的网络搜索将提供95%的必要材料。但我还是投了更高的票。