public void BuildGraph() { // Build Nodes Console.WriteLine("Building Vertices..."); for(int i=0;i< Nodes; i++) { Vertex temp = new Vertex(i); if(Vfirst==null) { Vfirst = temp; Vlast = temp; } else { temp.AddVertex(Vlast,temp); Vlast = temp; } } // Build Edges Console.WriteLine("Building Edges..."); DateTime time = DateTime.Now; Int32 seed = (Int32)time.Ticks; Random rand = new Random(seed); for(int i=0;i< Nodes;i++) { int j = rand.Next(0,Nodes); for(int k=0;k<j;k++) { int v2; while((v2 = rand.Next(0,Nodes))==i); //select a random node, also avoid self-loops BuildEdge(i,v2); //build edge betn node i and v2 } } }
public Edge(Vertex n1, Vertex n2) { v1=n1; v2=n2; int seed = n1.Name+n2.Name; Random rand = new Random(seed); Weight = rand.Next(0,50); }
public Vertex(int val) { Name = val; Next = null; Adjacent = new Vertex[Graph.Nodes]; }
public void AddVertex(Vertex x, Vertex y) { x.Next = y; }
public void DeleteVertex(Vertex v) { if(v == Vlast) { Vfirst=null; Vlast=null; GC.Collect(); GC.WaitForPendingFinalizers(); return; } Vertex temp = v.Next; v=null; GC.Collect(); GC.WaitForPendingFinalizers(); DeleteVertex(temp); temp=null; GC.Collect(); GC.WaitForPendingFinalizers(); }