我有一些相互依赖的对象。
我想创建这些对象的分层列表,其中对象放在列表中,该列表位于包含它的依赖项的列表之后。
上一个对象列表将如下所示:
Wich算法可以解决这个问题吗?
答案 0 :(得分:0)
如果你还没有任何帮助结构,那么你应该使用蛮力。
我会使用一个列表,它将在架构中垂直扩展,并为垂直列表的每个节点扩展一个。
因此,在您的示例中,我将在垂直列表中有5个节点,对于第一个节点,我将有一个包含3个节点的列表(第一个节点将托管A,第二个D和第三个G)。垂直列表的第二个节点将有一个包含一个节点的列表,该列表将保存B,依此类推。
所以算法会是这样的:
1.For every item
2. if item.dependency in list
3. append item in the correct node
4. else // item not in list
5. create node in list with the dependency of the item
6. append item in the created node
所以,在上面的伪代码中,当我说列表时,我的意思是垂直的。
在第1步,我们会检查您拥有的所有物品。
在步骤2中,检查列表中是否存在您当前正在处理的项目(通过搜索整个列表并返回找到的位置或更智能的内容)。
在步骤3,您进入步骤2中找到的位置,并在位于节点的列表末尾插入项目的值(您不需要再次存储依赖项)。请注意,如果位置中的节点在其列表中没有条目,那么您还需要创建它的列表。
在第4步,我们是在列表中找不到我们的项目。
在第5步,我们在列表中创建一个新节点,该节点将具有项目依赖关系的值。
在步骤6,我们将项目插入在步骤5中创建的节点中。
希望这有帮助!