Я изо всех сил пытаюсь получить foreach l oop, работающий до l oop через каждый элемент LinkedList - PullRequest
1 голос
/ 05 апреля 2020

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

Вот код для выполнения поиска Строка foreach - это problem

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);
                    }
                }

            }
        }

Вот код графического узла, он вызывает getadjlist и должен проходить через l oop для каждого элемента в этом списке, в настоящее время он не l oop во всех публикациях c class GraphNode { частный T id; // данные, хранящиеся в узле («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;
    }
}
...