Atraviesa la matriz y mientras atraviesas
Por cada 1 encontrado, agregue un nodo que contenga la columna no.
de la celda a la cabeza del nodo que representa la fila no.
la celda donde encontraste esto 1.
La complejidad temporal de este algoritmo es [matemática] O (n ^ 2) [/ matemática] a medida que atraviesa la matriz. También te estoy proporcionando un esquema aproximado del código:
list_ptr * matToList (int mat [] [], int r, int c)
{
list_ptr * var;
// Obtenga memoria para la var aquí.
para (int i = 0; i <r; i ++)
para (int j = 0; j <c; j ++)
si (mat [i] [j])
addNode (list_ptr [i], j); // Escribe esto () tu mismo
// agrega un nodo de j en el nodo principal de i
volver var;
}
- ¿Por qué este bucle, usado para agregar caracteres adyacentes en un vector, produce una salida extraña?
- ¿Qué es una explicación intuitiva de P = NP?
- ¿Qué significa que un problema en informática sea NP completo?
- ¿Cuáles son tus 10 idiomas favoritos?
- ¿Alguna vez eres totalmente experto en matemáticas?
Si el gráfico no está dirigido, puede atravesar la mitad superior de la diagonal principal de la matriz, pero tendrá que usar [math] addNode () [/ math] dos veces. (¿Piensa por qué?)