Ejemplo n.º 1
0
        public Vertex AddSingleVertex(long id)
        {
            if (Verticies.ContainsKey(id))
            {
                return(Verticies[id]);
            }

            Verticies[id] = new Vertex(id);
            return(Verticies[id]);
        }
Ejemplo n.º 2
0
        //This works only for directed graph because for undirected graph we can end up adding edges two times to allEdges

        public void AddVertex(Vertex vertex)
        {
            if (Verticies.ContainsKey(vertex.Id))
            {
                return;
            }

            Verticies[vertex.Id] = vertex;

            foreach (Edge edge in vertex.Edges)
            {
                Edges.Add(edge);
            }
        }
Ejemplo n.º 3
0
 public void RemoveById(int id)
 {
     if (Verticies.ContainsKey(id))
     {
         Verticies.Remove(id);
         if (VertexOfEdgesById.ContainsKey(id))
         {
             VertexOfEdgesById.Remove(id);
         }
     }
     if (Edges.ContainsKey(id))
     {
         var e = Edges[id];
         VertexOfEdgesById.Remove(e.FromId);
         VertexOfEdgesById.Remove(e.ToId);
         Edges.Remove(id);
     }
 }
Ejemplo n.º 4
0
        public void AddEdge(long id1, long id2, int weight)
        {
            Vertex vertex1 = null;

            if (Verticies.ContainsKey(id1))
            {
                vertex1 = Verticies[id1];
            }
            else
            {
                vertex1        = new Vertex(id1);
                Verticies[id1] = vertex1;
            }

            Vertex vertex2 = null;

            if (Verticies.ContainsKey(id2))
            {
                vertex2 = Verticies[id2];
            }
            else
            {
                vertex2        = new Vertex(id2);
                Verticies[id2] = vertex2;
            }

            Edge edge = new Edge(vertex1, vertex2, IsDirected, weight);

            Edges.Add(edge);

            vertex1.AddAdjacentVertex(edge, vertex2);

            if (!IsDirected)
            {
                vertex2.AddAdjacentVertex(edge, vertex1);
            }
        }
Ejemplo n.º 5
0
 public bool ContainsVerticies(int id)
 {
     return(Verticies.ContainsKey(id));
 }