Example #1
0
        /// <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());
            }
        }
Example #3
0
        /// <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();
            }
        }