Как создать пересекающиеся связанные списки в C #? - PullRequest
0 голосов
/ 14 августа 2010

Я пытаюсь создать 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);

Может кто-нибудь подсказать мне, как я могу создать Y-образный связанный список в C #.

1 Ответ

2 голосов
/ 14 августа 2010

Это не поддерживается.Узел отслеживает свои List, к которым вы можете получить доступ через свойство только для получения.Это означает, что узел не может быть в двух списках одновременно, и вы можете изменить родительский список, только удалив и добавив.

Это явно предназначено для защиты людей от ошибок, но также делает то, что вы хотитеневозможно.Обратите внимание, что LinkedList имеет двойную связь, поэтому, если это сработает, вам придется произвольно выбрать ссылку List и Previous.

Вы можете использовать (или написать) стороннююреализация с другим поведением.Например, этот код реализует односвязный список.Узлы не имеют ссылок на их содержащий список, поэтому Y должен быть в порядке.

...