Как перебирать словарь, если каждый ключ имеет список в качестве значения - PullRequest
0 голосов
/ 05 апреля 2011
public void createList(Node root)
    {

        Dictionary<int, LinkedList<Node>> track = new Dictionary<int, LinkedList<Node>>();
        LinkedList<Node> first = new LinkedList<Node>();
        first.AddFirst(root);
        track.Add(1, first);

        int level = 1;
        LinkedList<Node> temp = new LinkedList<Node>();
        while (true)
        {
            LinkedList<Node> lis = new LinkedList<Node>();
            if (level == 1)
                temp = first;
            foreach (Node n in temp)
            {
                if (n.left!=null)
                    lis.AddLast(n.left);
                if (n.right != null)
                    lis.AddLast(n.right);

            }
            level++;
            temp=lis;
            if (lis.Count > 0)
            {
                track.Add(level, lis);
            }
            else
                break;

        }

    }

Здравствуйте, в приведенной выше программе в C # я добавляю каждый уровень двоичного дерева в отдельные связанные списки, а затем добавляю каждый связанный список в словарь.Может кто-нибудь сказать, пожалуйста, как перебрать каждый связанный список в словаре?Если у меня есть трек <1, <1,2,3,4 >>, как мне добраться до 1,2,3,4?Что если я захочу добавить или удалить в 1,2,3,4?

Благодаря Ramhound'у за указатели на проблему, я думаю, мне придется получить объект LinkedList для каждого ключа в Словаре изатем измените связанный список, как я могу убедиться, что изменение отражено в Словаре - это мой следующий вопрос => Пожалуйста, дайте мне знать, если имеет смысл следующее

LinkedListObject = Dictionary [mykey];// Изменить LL, добавить, удалить и т. Д. MyDictionary [myKey] = LinkedListObject;// положить обратно

Ответы [ 2 ]

0 голосов
/ 05 апреля 2011

Я не верю, что вы можете изменить словарь во время его циклического просмотра.Вы должны будете отслеживать, какие ключи вы собираетесь удалить, проходить через коллекцию TH и удалять каждый ключ за раз.

Существуют альтернативы для словаря, которые позволили бы вам изменять его во время цикласодержание.

0 голосов
/ 05 апреля 2011

Чтобы перебрать связанные списки, получите список значений из словаря.

Чтобы получить первый связанный список, просто наберите get(1) в словаре, и он вернет LinkedList<Node>.

Обратите внимание, я предполагаю, что это тестовый код, поскольку в нем есть несколько проблем, которые могут помешать его компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...