Ejemplo n.º 1
0
        /*
         * Retorna a lista de arestas do grafo
         */
        public override List <Edge <T> > Edges()
        {
            List <Edge <T> > edges = new List <Edge <T> >();
            int lenNodo            = adjList.Values.Count;

            //Para cada lista de adjacencia
            for (int i = 0; i < lenNodo; i++)
            {
                List <Edge <T> > arestas = adjList.Values.ToList()[i];
                int lenAresta            = arestas.Count;
                //Para cada aresta
                for (int j = 0; j < lenAresta; j++)
                {
                    //Adicionamos a aresta a lista
                    edges.Add(arestas[j]);
                }
            }
            //Ordenamos a lista apartir dos pesos da aresta
            EdgeComparer <T> comparer = new Model.EdgeComparer <T>();

            edges.Sort(comparer);
            return(edges);
        }
Ejemplo n.º 2
0
        /*
         * Retorna a lista de arestas do grafo
         */
        public override List <Edge <T> > Edges()
        {
            List <Edge <T> > edges = new List <Edge <T> >();

            //Para cada linha de adjacencia
            foreach (Dictionary <Vertex <T>, Edge <T> > adjacencyRow in adjMatrix.Values)
            {
                //Para casa aresta do vertice
                foreach (Edge <T> edge in adjacencyRow.Values)
                {
                    //Se a aresta não for nula
                    if (edge != null)
                    {
                        //Adicionamos a aresta a lista
                        edges.Add(edge);
                    }
                }
            }
            //Ordenamos a lista apartir dos pesos da aresta
            EdgeComparer <T> comparer = new Model.EdgeComparer <T>();

            edges.Sort(comparer);
            return(edges);
        }