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); }
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); }
public void AddNode(T node) { Graph[node] = new JobNode <T>(node); Nodes.Push(node); }