добавление значений в словарь с помощью цикла foreach - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь сгенерировать график, который добавляет точки одну за другой, используя начальную точку и dictionary, словарь имеет форму dictionary<int, int> перед выполнением алгоритма поиска пути.Я хотел бы заполнить словарь на основе двух списков значений int, caveConnections и connectionWeights соответственно.Точка может иметь более одного соединения, поэтому для добавления значений требуется цикл.

первый int добавленный в словарь читается построчно из текстового файла.второе значение int должно быть добавлено из stack.

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

Graph g = new Graph();
g.add_vertex(1, new Dictionary<int, int>() {{2, 7}, {3, 8}});
g.add_vertex(2, new Dictionary<int, int>() {{1, 7}, {6, 2}});
g.add_vertex(3, new Dictionary<int, int>() {{1, 8}, {6, 6}, {7, 4}});
g.add_vertex(4, new Dictionary<int, int>() {{6, 8}});
g.add_vertex(5, new Dictionary<int, int>() {{8, 1}});
g.add_vertex(6, new Dictionary<int, int>() {{2, 2}, {3, 6}, {4, 8}, {7, 9}, {8, 3}});
g.add_vertex(7, new Dictionary<int, int>() {{3, 4}, {6, 9}});
g.add_vertex(8, new Dictionary<int, int>() {{5, 1}, {6, 3}});

Содержимое текстового файла;

4 
4 5 
5 6 7 
1 5 6 
2 3 4 
3 4 
3 

Стек построен следующим образом;

Stack<String> connectionStack = new Stack<string>();
List<int> connectionData = new List<int>();
foreach (String s in caveConnections)
{
    connectionStack.Push(s);
}

Содержимое стека;

2,8,3,2,14,5,7,6,11,2,11,6,14,1

любые предложения будут оценены.

1 Ответ

0 голосов
/ 30 ноября 2018
string[] lines = File.ReadAllLines("ints.txt");
Graph g = new Graph();
for(int i =0; i< lines.Liength; i++)
{
     string[] ints = lines[i].Split(' ');
     Dictionary<int, int> dict = new Dictionary<int, int>();
     for(int j = 0; j<ints.Length;j++)
        if(!dict.ContainsKey(int.Parse(ints[i].Trim())))
            dict.Add(int.Parse(ints[i].Trim()), int.Parse(connectionStack.Pop()));
     g.add_vertex(i+1, dict);
}

Здесь, конечно, если количество стеков меньше, чем целых в текстовом файле, у вас будет исключение.

...