public void Display() { EdgeNode q; for (VertexNode p = start; p != null; p = p.nextVertex) { Console.Write(p.name + "=>"); for (q = p.firstEdge; q != null; q = q.nextEdge) { Console.Write(" " + q.endVertex.name); } Console.WriteLine(); } }
private VertexNode FindVertex(String s) { VertexNode p = start; while (p != null) { if (p.name.Equals(s)) { return(p); } p = p.nextVertex; } return(null); }
public bool EdgeExists(String s1, String s2) { VertexNode u = FindVertex(s1); EdgeNode curEdge = u.firstEdge; while (curEdge != null) { if (curEdge.endVertex.name.Equals(s2)) { return(true); } curEdge = curEdge.nextEdge; } return(false); }
public int OutDegree(String s) { VertexNode u = FindVertex(s); if (u == null) { throw new System.InvalidOperationException("Invalid vertex"); } int outd = 0; EdgeNode q = u.firstEdge; while (q != null) { q = q.nextEdge; outd++; } return(outd); }
private void DeletefromVertexList(String s) { if (start == null) { Console.WriteLine("No vertices to be deleted."); return; } if (start.name.Equals(s)) // Vertex to be deleted is first vertex of list { for (EdgeNode q = start.firstEdge; q != null; q = q.nextEdge) { e--; } start = start.nextVertex; n--; } else { VertexNode p = start; while (p.nextVertex != null) { if (p.nextVertex.name.Equals(s)) { break; } p = p.nextVertex; } if (p.nextVertex == null) { Console.WriteLine("vertex not found."); return; } else { for (EdgeNode q = p.nextVertex.firstEdge; q != null; q = q.nextEdge) { e--; } p.nextVertex = p.nextVertex.nextVertex; n--; } } }
public void InsertEdge(String s1, String s2) { if (s1.Equals(s2)) { Console.WriteLine("Invalid edge - start and end vertices are same"); return; } VertexNode u = FindVertex(s1); VertexNode v = FindVertex(s2); if (u == null || v == null) { Console.WriteLine("Start or End vertex not present"); return; } EdgeNode temp = new EdgeNode(v); if (u.firstEdge == null) { u.firstEdge = temp; e++; } else { EdgeNode p = u.firstEdge; while (p.nextEdge != null) { if (p.endVertex.name.Equals(s2)) { Console.WriteLine("Edge present."); return; } p = p.nextEdge; } if (p.endVertex.name.Equals(s2)) { Console.WriteLine("edge present."); return; } p.nextEdge = temp; e++; } }
public int InDegree(String s) { VertexNode u = FindVertex(s); if (u == null) { throw new System.InvalidOperationException("Invalid vertex"); } int ind = 0; for (VertexNode p = start; p != null; p = p.nextVertex) { for (EdgeNode q = p.firstEdge; q != null; q = q.nextEdge) { if (q.endVertex.name.Equals(s)) { ind++; } } } return(ind); }
public EdgeNode(VertexNode v) { endVertex = v; }