【发布时间】:2019-07-17 11:09:15
【问题描述】:
我有一个带有“点”(或大纲)层次结构的表: 字段为 L1 L2 L3 L4 L5(L = 级别)
例如:
1.0.0.0.0
1.1.0.0.0
1.1.1.0.0
1.1.2.0.0
1.2.0.0.0
如果我想在 1.1.1.0.0 插入同级,我应该得到一个 1.1.2.0.0 的新行 - 并且已经存在的 1.1.2.0.0 应该调整到 1.1.3.0.0 等.
如果我想插入一个子 1.1.1.0.0,我应该得到一个 1.1.1.1.0 的新行,不需要调整,因为该级别不存在同级。
我为此创建了程序代码 - 但它正在变成意大利面条 - 我想要一个带有处理这些插入和调整的类的 OOP 解决方案。
任何人都可以推荐伪代码来处理这两种类型的插入以及对现有“行”的必要调整吗?
任何帮助或建议将不胜感激!
【问题讨论】:
-
每个对象都有自己的 L1 到 L5 字段。只需为兄弟姐妹添加一个链表实现,例如:
Item1.1具有对Item1.2的引用,并且对于父级也保留对第一个子级的引用。然后,在添加元素时,您可以遍历每个级别的while Lx not y之类的结构,当达到最低级别时,像调整任何链表一样调整兄弟姐妹。 -
谢谢 Mat - 但我不熟悉“链表实现”的概念 - 你能提供一个 C# 中的简单示例吗?
-
This 应该让您进行简单的了解。对于真正的实现,您可以简单地使用
LinkedList<T>类并调用现有方法AddAfter()。 -
再次感谢,Mat - 甚至不知道 LinkedList
存在!让我深入研究一下这如何适用于我的场景...... -
你真的应该给出一些你的代码,关于这个问题有太多的事情可以假设。
标签: c# oop document hierarchy outlining