/// <summary> /// Return an identifier of vertex which user name is userNameVertex /// If the vertex with the identifier does not exist construct one /// </summary> /// <param name="userNameVertex">user name of vertex</param> /// <returns>identifier of vertex</returns> private int GetIdentifier(string userNameVertex) { if (mapping.TryGetValue(userNameVertex, out int identifierVertex)) { return(identifierVertex); } VertexExtended vertexExtended = new VertexExtended(userNameVertex); AddVertexToAdjacencyList(vertexExtended); mapping.Add(userNameVertex, vertexExtended.GetIdentifier()); return(vertexExtended.GetIdentifier()); }
/// <summary> /// Initialize graph /// </summary> /// <param name="countVertices">Count of vertices = size of an adjacency matrix</param> public GraphAdjacencyMatrix(int countVertices) : base(countVertices) { // Variable VertexExtended vertexExtended; mapping = new Dictionary <int, int>(); // Create vertices for (int i = 0; i < countVertices; i++) { vertexExtended = new VertexExtended(); AddVertexToAdjacencyList(vertexExtended); mapping.Add(i, vertexExtended.GetIdentifier()); } }
/// <summary> /// Add a vertex to AdjacencyList (no neighbors) /// If countVertices is less than realCountVertices throws GraphInvalidCountVertices /// </summary> /// <param name="vertexExtended">new vertex</param> protected void AddVertexToAdjacencyList(VertexExtended vertexExtended) { try { adjacencyList.Add(vertexExtended, new HashSet <VertexExtended>()); mapping.Add(vertexExtended.GetIdentifier(), vertexExtended); mappingUserName.Add(vertexExtended.GetUserName(), vertexExtended); IncrementRealCountVertices(); } catch (ArgumentException) { throw new MyException.GraphException.GraphVertexAlreadyExistsException(); } if (graphProperty.GetCountVertices() < GetRealCountVertices()) { throw new MyException.GraphException.GraphInvalidCountVerticesException(); } }