public static bool getTopologicalSort(JobNode node, List <int> topologicalSort)
        {
            if (node.isVisiting)
            {
                return(true);
            }
            if (node.isVisited)
            {
                return(false);
            }

            node.isVisiting = true;
            foreach (JobNode prereq in node.prereqs)
            {
                bool containsCycle = getTopologicalSort(prereq, topologicalSort);
                if (containsCycle)
                {
                    return(true);
                }
            }
            node.isVisited  = true;
            node.isVisiting = false;
            topologicalSort.Add(node.job);
            return(false);
        }
Пример #2
0
        public void AddPrerequisites(T job, T prerequisite)
        {
            JobNode <T> jobNode    = GetNode(job);
            JobNode <T> prereqNode = GetNode(prerequisite);

            jobNode.PreRequisites.Add(prereqNode);
        }
            public void addPrereq(int job, int prereq)
            {
                JobNode jobNode    = getNode(job);
                JobNode prereqNode = getNode(prereq);

                jobNode.prereqs.Add(prereqNode);
            }
Пример #4
0
 public void AddNode(T node)
 {
     Graph[node] = new JobNode <T>(node);
     Nodes.Push(node);
 }