在c#中构建链表
Building a linked list in c#
我目前正在编写一个算法来在 C# 中构建一个对象链。对象的顺序很重要,因为它们代表特定顺序的一系列事件。对象 A 执行一个动作并包含对执行动作等的对象 B 的引用。我遇到的问题是对象的初始状态是无序的。我有包含每个对象和系列中下一个对象的名称的字典。我正在努力的是设计一种快速算法来 "sort" 它们。我最初的假设是遍历字典并为每个值查找匹配它的键并将这两个对象添加到另一个列表。有几个问题:
1. 确定链中的第一个对象。
2. 使用嵌套循环非常复杂。
3. 决定使用什么 C# 对象来容纳对象链。
我希望有人有排序算法的经验来完成这个或做过类似的事情。感谢所有评论和帮助,谢谢。
您对 post 的最后评论很重要——事实上存在多个作业链。这不是分类练习;这是一个图形构建练习。
您已经有一个包含每个对象及其后继对象的散列。我假设一个对象可以有多个后继者,同样也可以有多个前任者(只是为了足够通用)。使用每个对象及其前身构建另一个散列,您可以从这两个对象轻松显示您想要的任何图表或关系树。
通过迭代后继哈希来构建前继哈希。对于每个具有后继 B 的后继密钥 A,插入显示前继 A 的 Predecessors 密钥 B。O(n)。
使用这两个散列,您可以编写函数以递归方式为任何给定对象构造一个完整的父树(前任)或子树(后继)。
编辑:请注意,如果您想知道哪些作业是原始作业(没有前任)或终端作业(没有后继者),为了构建完整的显示,您必须单独跟踪这些作业,使用,比如说,两个名为 Originals 和 Terminals 的数组。您可以在迭代原始 Successors 哈希以构建 Predecessors 时构建 Terminals,并通过最后一次通过 Predecessors 构建 Originals,找到没有前任的条目。但是,如果您只是希望能够满足对单个对象的特定查询,那么 Successors 和 Predecessors 应该可以做到。
我目前正在编写一个算法来在 C# 中构建一个对象链。对象的顺序很重要,因为它们代表特定顺序的一系列事件。对象 A 执行一个动作并包含对执行动作等的对象 B 的引用。我遇到的问题是对象的初始状态是无序的。我有包含每个对象和系列中下一个对象的名称的字典。我正在努力的是设计一种快速算法来 "sort" 它们。我最初的假设是遍历字典并为每个值查找匹配它的键并将这两个对象添加到另一个列表。有几个问题: 1. 确定链中的第一个对象。 2. 使用嵌套循环非常复杂。 3. 决定使用什么 C# 对象来容纳对象链。
我希望有人有排序算法的经验来完成这个或做过类似的事情。感谢所有评论和帮助,谢谢。
您对 post 的最后评论很重要——事实上存在多个作业链。这不是分类练习;这是一个图形构建练习。
您已经有一个包含每个对象及其后继对象的散列。我假设一个对象可以有多个后继者,同样也可以有多个前任者(只是为了足够通用)。使用每个对象及其前身构建另一个散列,您可以从这两个对象轻松显示您想要的任何图表或关系树。
通过迭代后继哈希来构建前继哈希。对于每个具有后继 B 的后继密钥 A,插入显示前继 A 的 Predecessors 密钥 B。O(n)。
使用这两个散列,您可以编写函数以递归方式为任何给定对象构造一个完整的父树(前任)或子树(后继)。
编辑:请注意,如果您想知道哪些作业是原始作业(没有前任)或终端作业(没有后继者),为了构建完整的显示,您必须单独跟踪这些作业,使用,比如说,两个名为 Originals 和 Terminals 的数组。您可以在迭代原始 Successors 哈希以构建 Predecessors 时构建 Terminals,并通过最后一次通过 Predecessors 构建 Originals,找到没有前任的条目。但是,如果您只是希望能够满足对单个对象的特定查询,那么 Successors 和 Predecessors 应该可以做到。