Sobre listas enlazadas

Responder
Mensaje
Autor
Masakre
Mensajes: 249
Registrado: 06/06/2012 10:52 am

Sobre listas enlazadas

#1 Mensaje por Masakre » 27/10/2013 4:32 pm

En realidad nunca traté este tema cuando estaba aprendiendo C++, y parece que tampoco aparece como tema en el curso de Java que estoy llevando.

Sólo he tenido ideas generales. Me parece que en C se hacía usando struct y en C++ podía ser también con ello o bien con class.
Donde un nodo presentaba 2 elementos (al menos en una lista simple): el contenido en sí que podía almacenar y una dirección de memoria, que sería del nodo siguiente (o null si se trataba del último elemento, en las listas enlazadas simples).

Yo tengo una idea más o menos de lo que sucede:
Cuando se crea un objeto de una clase, éste ocupa una cantidad de memoria que puede calcularse sumando la cantidad de bytes que ocupan cada uno de sus atributos.
Sin embargo, ahora viene mi duda:
¿Cuánto espacio ocupa un objeto de una clase Nodo?
Es decir, el espacio que ocupa un puntero depende del tipo al que apunta. Si una clase Nodo tiene 2 atributos que son por ejemplo un entero (int) y un puntero a Nodo, ¿cuánto espacio ocupa? Porque para calcular ello se requiere calcular el espacio que ocupa un int y un puntero a Nodo... pero para calcular el espacio que ocupa un puntero a Nodo se requiere calcular el espacio que ocupa una instancia de Nodo, y para ello se requiere conocer lo que ocupa un puntero a Nodo, y así indefinidamente. ¿Entonces cómo resuelve ello el ordenador?

Suponiendo aún que una dirección de memoria ocupa siempre un mismo espacio, una variable puntero no contiene sólo eso... pues debe contener además información acerca del tipo que está tratando. Así sabrá cuántos bits en adelante usar para cuando se haga uso del operador de desreferenciación.

Esto es en C++, y ahora que estoy llevando Java, veo que no existen los punteros, solamente las referencias, pero según lo que me indico mi profesora, esas referencias son como punteros porque reciben una dirección de memoria luego de usar new. Pensando así, diría yo que todo operador . en Java equivale al operador -> de C++, ya que siempre se trabaja desde referencias.

Por favor, si alguien puede orientarme, le estaría muy agradecido.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados