[Programación] Un problema de algoritmos II

Horacio Castellini programacion@lugro.org.ar
Mon, 24 May 2004 19:44:58 -0300


Holas.... queridos programadores....

Tengo un problema que seguramente el algoritmo existe, si alguien conoce como 
se llama o me dá una punta para resolverlo se lo agradesco...  Porque estoy 
confndido y no lo puedo obtimizar respecto de la memoria...

A ver... tengo dos listas enlazadas llamadas F[] y S[] donde la primera 
guarda el nombre de personas y la segunda temas de conversación, como cadenas 
de caracteres, el nombre de personas y temas con un 95,56% de probabilidad 
están repetidos en cada lista. Ahora bien lo que intento hacer (asumiendo 
capasidad de asignación dinámica, por lo tanto no me preocupo en definir 
dimensión, etc...)

la dimensión de F y S es N, existen K1 temas distintos y K2 autores 
distintos,  el arreglo de cadenas G está compuesto de K2+1 columnas y K1 
filas donde en la primera columna se guarda el tema y en las restantes el 
autor, inicialmente todos los elementos de G son el puntero (char*)NULL. Si 
el autor ya fue grabado no puede volver a grabarlo sobre el mismo tema. 
Entonces se me ocurrió... algo como esto...

llamar_a Clonar(S,Q) // duplica la lista
llamar_a Clonar(F,T)
// elimina lineas repetidas y las ordena, llena los sobrantes con (char*)NULL
llamar_a Ordenar_Unificar(Q)
llamar_a Ordenar_Unificar(T)
k<-0
mientras Q[k]<>NULL hacer
     para i<-0 hasta N  hacer
       si Q[k]=S[i] entonces
           l<-0
           mientras T[l]<>NULL hacer
              si T[l]=F[i] y g[k,l]<>F[i] entonces
	      g[k,0]<-S[i]
                  g[k,l]<-F[i]
               finsi
               l<-l+1
            finmientras
        finsi
      finpara
      k<-k+1
finmientras

Pta: no me manden código en perl, que no conosco, en todo caso en awk....

Saludos Horacio.