【问题标题】:how to create intersecting linked lists in C#?如何在 C# 中创建相交链表?
【发布时间】:2010-08-14 05:06:08
【问题描述】:

我正在尝试创建 2 个具有公共交集节点的链表。正如我所看到的,这是 LinkedList 中查找交集节点的一个非常热门的问题。我编写了以下代码,但它抛出了 InvalidOperationexception。

        LinkedList<int> LL = new LinkedList<int>();
        LL.AddFirst(5);
        LL.AddFirst(4);
        LL.AddFirst(3);
        LL.AddFirst(2);
        LL.AddFirst(1);

        LinkedListNode<int> sectionNode = LL.Find(3);
        LinkedList<int> LL2 = new LinkedList<int>();
        LL2.AddFirst(100);
        LL2.AddFirst(90);
        LL2.AddFirst(80);
        LL2.AddFirst(sectionNode);

有人可以指导我如何在 C# 中创建 Y 形链表。

【问题讨论】:

  • 你对什么是“非常热门的问题”有一些有趣的想法。

标签: c# .net algorithm linked-list


【解决方案1】:

不支持。该节点会跟踪它的List,您可以通过get-only 属性访问它。这意味着一个节点不能同时在两个列表中,您只能通过删除然后添加来更改父列表。

这显然是为了保护人们免受错误的影响,但它也使你想要的东西变得不可能。请注意,LinkedList 是双向链接的,所以如果这可行,您将不得不任意选择 ListPrevious 引用。

您可以使用(或编写)具有不同行为的第三方实现。例如,this code 实现了一个单链表。节点没有对其包含列表的引用,因此 Y 应该没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多