[C con Clase] TDA si, pero muy complicados

Salvador Pozo salvador en conclase.net
Mie Abr 18 19:21:21 CEST 2007


El pasado 2007-04-18 11:56:15, Rey escribió:
 
R> Hola, bueno, no es exactamente una duda, ayer cuando envié correo solicitando ayuda, el amigo Salvador me dio una respuesta, que aunque no la implementé, sé que funcionará. Sin embargo, no creo que sea precisamente necesario hacer uso de TDA, (corríjame alguien si me equivoco) hablaba de hacer algo tan simple como esto:
R>   char **Cadenas;
R>   char **tempCadenas;
R>   int seg = 26;
R>   int pri = 2;
R>   Cadenas = new char*[pri];
R>   tempCadenas = new char*[pri];
R>   for (int i = 0; i < pri; i++)
R>   {
R>     Cadenas[i] = new char[seg];
R>     tempCadenas[i] = new char[seg];
R>   }
R> Que lo hice ayer, inventando un poco jejejejeje, y bueno que resultó. Ahora creo que este arreglo lo puedo redimensionar cuantas veces desee. Quizás el uso de listas y TDA sea al final más fácil, no lo sé. Pero al menos esto funciona. Lo envío a la lista porque puede ser que le resulte útil a alguien más.

Hola:

Evidentemente, este tipo de solución puede ser suficiente en muchos casos, pero redimensionar el array no es tan directo o simple como puede ser con un TDA.

En tu ejemplo, si quieres añadir nuevas cadenas, tendrás que crear otro vector dinámico de punteros a cadenas, copiar los valores almacenados en el vector anterior, eliminar (liberar la memoria) del vector antiguo, y añadir los nuevos.

Para esto podrías crear tu propio TDA, es decir, una clase o plantilla; o bien usar una lista dinámica, que puede crecer de una forma más sencilla, al menos desde el punto de vista del programador que use el TDA.

Además, tus arrays de cadenas siempre almacenan cadenas de la misma longitud máxima, en este caso, 25 caracteres, desperdiciando memoria cuando las cadenas son más cortas o fallando con cadenas más largas.

Sin embargo, es frecuente, al menos en mi caso, diseñar las estructuras a la medida de los problemas que resolvemos, así que, en tu caso seguramente sea suficiente con la estructura que has diseñado.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase