UTNianos

Versión completa: [Ayuda] AyED - Listas de Listas
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas.
Necesito que alguien por favor me explique y muestre en código cómo se hace una lista de listas (listas cuyo campo info contenga un puntero a otra lista). Cuando me explican la parte teórica la entiendo perfectamente pero no logro llevarla a código...
Desde ya muchas gracias =)
Básicamente es esto que dijiste
Cita:listas cuyo campo info contenga un puntero a otra lista


Cita:Cuando me explican la parte teórica la entiendo perfectamente pero no logro llevarla a código...


Un poco general la pregunta =P Codeaste una lista común? con que parte o función estas teniendo problema ?
(29-11-2017 16:19)fav escribió: [ -> ]Básicamente es esto que dijiste
Cita:listas cuyo campo info contenga un puntero a otra lista


Cita:Cuando me explican la parte teórica la entiendo perfectamente pero no logro llevarla a código...


Un poco general la pregunta =P Codeaste una lista común? con que parte o función estas teniendo problema ?

Si, con las listas comunes no tengo problema. Tengo entendido que para las listas de listas tengo que usar 2 funciones. Una: IncertarOrdenado y otra IncertarOrdenadoSinRepetir. Con la 2da es con la que tengo el problema, no la sé codear, ni mucho menos usarla para armar la lista de listas.
Cita:Con la 2da es con la que tengo el problema, no la sé codear, ni mucho menos usarla para armar la lista de listas.

Mmm y que haría insertarOrdenadoSinRepetir en una lista de listas? si queres saber si una lista ya esta contenida en tu listaDeListas acordate que éstas las estás representando como punteros, entonces podes comparar si el campo info o data de algun elemento de tu listaDeListas (que es un puntero de lista) es igual al puntero que vas a agregar.

Si no sabes como codear insertarOrdenadoSinRepetir pensá que es igual a insertarOrdenado con la diferencia de que antes preguntas si el elemento ya existe dentro de la lista, algo asi:


void insertarOrdenadoSinRepetir (lista* lista, t_elemento elemento){
if(!contineElemento(lista, elemento)){
insertarOrdenado(lista, elemento);
}
}

bool contineElemento (lista* lista, t_elemento elemento){
t_nodo* aux = lista_obtener(lista, 0); // o lo que sea que uses para obtener el primer elemento de una lista
while(aux->siguiente!=NULL){
if(aux->info == elemento) return true;
aux = aux->siguiente;
}
return false;
}


Con una lista de lista tu "t_elemento" sería un puntero a una lista thumbup3
Eso... Muchas gracias... creo que con eso puedo imaginarme por donde va la cosa...
(29-11-2017 16:28)CimimUxMaio escribió: [ -> ]
(29-11-2017 16:19)fav escribió: [ -> ]Básicamente es esto que dijiste
Cita:listas cuyo campo info contenga un puntero a otra lista


Cita:Cuando me explican la parte teórica la entiendo perfectamente pero no logro llevarla a código...


Un poco general la pregunta =P Codeaste una lista común? con que parte o función estas teniendo problema ?

Si, con las listas comunes no tengo problema. Tengo entendido que para las listas de listas tengo que usar 2 funciones. Una: IncertarOrdenado y otra IncertarOrdenadoSinRepetir. Con la 2da es con la que tengo el problema, no la sé codear, ni mucho menos usarla para armar la lista de listas.

No, me parece que te estas confundiendo, por que(si no me equivoco) esas funciones son para LISTAS. Es decir, no importa si es una lista de una lista, o la misma lista principal que contiene sublistas.

Vos a insertarordenado, o insertarordenado sin repetir le pasas la lista y el campo info que queres incorporar.

Si vos queres insertar un elemento, por ejemplo, en la lista Dias, que esta dentro de la lista Meses lo que vas a hacer es pasarle a la función los parámetros listames->info.listadia y el info dia, ahora, si queres agregar un mes le vas a pasar listames y el info mes. No se si se entiende, en ambos casos pasas la lista. En el caso de agregar un dia(sublista), primero deberías chequear si existe el nodo mes, y si existe el nodo agregas el dia(pasarias la lista dia que esta dentro de la lista mes listames->info.listadia), sino deberías crear el nodo mes con el nodo día ya insertado y crear el nodo en la lista mes.

Que alguien me corrija si estoy equivocado, pero creo que es así. En todos los casos de listas, sublistas, arboles, y todo eso, te conviene siempre dibujar las estructuras de datos y usarlas como guía, ayuda bastante a no perderse.
(30-11-2017 16:38)Gonz4_ escribió: [ -> ]
(29-11-2017 16:28)CimimUxMaio escribió: [ -> ]
(29-11-2017 16:19)fav escribió: [ -> ]Básicamente es esto que dijiste
Cita:listas cuyo campo info contenga un puntero a otra lista


Cita:Cuando me explican la parte teórica la entiendo perfectamente pero no logro llevarla a código...


Un poco general la pregunta =P Codeaste una lista común? con que parte o función estas teniendo problema ?

Si, con las listas comunes no tengo problema. Tengo entendido que para las listas de listas tengo que usar 2 funciones. Una: IncertarOrdenado y otra IncertarOrdenadoSinRepetir. Con la 2da es con la que tengo el problema, no la sé codear, ni mucho menos usarla para armar la lista de listas.

No, me parece que te estas confundiendo, por que(si no me equivoco) esas funciones son para LISTAS. Es decir, no importa si es una lista de una lista, o la misma lista principal que contiene sublistas.

Vos a insertarordenado, o insertarordenado sin repetir le pasas la lista y el campo info que queres incorporar.

Si vos queres insertar un elemento, por ejemplo, en la lista Dias, que esta dentro de la lista Meses lo que vas a hacer es pasarle a la función los parámetros listames->info.listadia y el info dia, ahora, si queres agregar un mes le vas a pasar listames y el info mes. No se si se entiende, en ambos casos pasas la lista. En el caso de agregar un dia(sublista), primero deberías chequear si existe el nodo mes, y si existe el nodo agregas el dia(pasarias la lista dia que esta dentro de la lista mes listames->info.listadia), sino deberías crear el nodo mes con el nodo día ya insertado y crear el nodo en la lista mes.

Que alguien me corrija si estoy equivocado, pero creo que es así. En todos los casos de listas, sublistas, arboles, y todo eso, te conviene siempre dibujar las estructuras de datos y usarlas como guía, ayuda bastante a no perderse.

Creo que te entendí. Ahora me quedó un poco más claro... lo que no dije es que esta lista de listas la necesitaba para resolver un ejercicio en el que, sin ir en detalles, si el nodo de la lista principal se repetía ==> agrego un nodo a la sublista. Gracias de todas formas =)
URLs de referencia