将文本文件转换为图形

本文关键字:图形 转换 文件 文本 | 更新日期: 2023-09-27 18:25:38

我正试图将文本文件转换为图形,但当我尝试使用下面的values函数打印字典中的值时,它会打印类似于"System.Collections.Generic.List'1[System.String]"的内容!有人能告诉我我的代码出了什么问题吗?!这是文本文件的格式

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;

namespace Demo
{
public class Graph
{
    Dictionary<string, List<string>> st;
    static int count;
    static int count1;

    public Graph()
    {
        st = new Dictionary<string, List<string>>();
    }
    public Graph(string filename, string delimeter)
    {
        st = new Dictionary<string, List<string>>();
        FileStream fs = new FileStream(filename, FileMode.Open);
        StreamReader sr = new StreamReader(fs);

        while(sr.Peek()!=-1)
        {
            string line = sr.ReadLine();
            char r;
            r = Convert.ToChar(delimeter);
            string [] names = line.Split(r);               
            for(int i=1;i<names.Length;i++)
            {
                addEdge(names[1], names[i]);
            }
        }
        sr.Close();
    }
    public void addEdge(string a, string b)  
    {
        if(!st.ContainsKey(a))
        {
            addVertex(a);
        }
        if(!st.ContainsKey(b))
        {
            addVertex(b);
        }
        st[a].Add(b);
        st[b].Add(a);
        count1++;   

    }
    public void addVertex(string v)
    {
        isContainV(v);
        st.Add(v, new List<string>());
        count++;
    }
    public int vertexcount()
    {
        return count;
    }
    public int edgeCount()
    {
        return count1;
    }
    public void edge()
    {
        foreach (string key in st.Keys)
        {
            Console.WriteLine(key);
        }
    }
    public void values()
    {
        foreach (List<string> temp in st.Values)
        {
            Console.WriteLine(temp);
        }
    }
    public bool isContainV(string v)
    {
        if(!st.ContainsKey(v))
        {
            return false;
        }
        return true;
    }
    public IEnumerable<string> adjacentTo(string v)
    {
        return st[v];
    }
}
}

将文本文件转换为图形

您不能编写字符串的集合,您需要添加另一个循环来编写每个字符串。

    foreach (List<string> temp in st.Value)
    {
       foreach (string s in temp)
       {
          Console.WriteLine(s);
       }
    }

如果你只想让整个字典有一个循环,试试这个。。。

    foreach (KeyValuePair<string, List<string>> entry in st)
    {
       Console.WriteLine(entry.Key);
       foreach (string s in entry.Value)
       {
           Console.WriteLine(s);
       }
    }