我正在努力让foreach循环遍历LinkedList的每个元素

时间:2020-04-05 20:09:23

标签: c# foreach linked-list iteration depth-first-search

我正在尝试在图节点上进行深度优先遍历,但是我无法让每个循环正确循环

这是进行搜索的代码 foreach行就是问题

public void DepthFirstTraverse(T startID, ref List<T> visited)
        {
            LinkedList<T> adj;
            Stack<T> toVisit = new Stack<T>();
            GraphNode<T> current = new GraphNode<T>(startID);

            toVisit.Push(startID);

            while (toVisit.Count != 0)
            {
                current.ID = toVisit.Peek();
                toVisit.Pop();
                visited.Add(current.ID);
                Console.WriteLine(current.GetAdjList());
                foreach(T n in current.GetAdjList()) 
                {
                    Console.WriteLine("Loop working");
                    if(toVisit.Contains(n)==false && visited.Contains(n)==true)
                    {
                        toVisit.Push(n);
                    }
                }

            }
        }

这是graphnode代码,它调用getadjlist并应为该列表中的每个元素循环通过,当前它根本不循环 公共类GraphNode { 私人身份证//存储在节点中的数据(节点的“ id”)。 私人LinkedList adjList; //节点的相邻列表

    // constructor 
    public GraphNode(T id)
    {
        this.id = id;
        adjList = new LinkedList<T>();
    }

    // set and get the data stored in the node 
    public T ID
    {
        set { id = value; }
        get { return id; }     
    }


    //add a directed edge from “this” node to the node "to”
    public void AddEdge(GraphNode<T> to)
    {
        adjList.AddFirst(to.ID);
    }

    // returns the adjacent list of the node
    public LinkedList<T> GetAdjList()
    {
        return adjList;
    }
}

0 个答案:

没有答案