15/11/2011, 12:38
|
|
Respuesta: Problemas con mini programas. Eso es porque son cosas diferentes desde el punto de vista de estructuras de datos.
Un vector, o array, es un espacio de memoria reservado para almacenar una cierta cantidad de objetos, generalmente del mismo tipo. Si tenés que almacenar números enteros de 4 bytes, reservando 32 bytes tenés espacio para 8 números.
La ventaja es que, teniendo la dirección de memoria donde comienza el vector, como ya se sabe el tipo de objeto que guarda el array (y por tanto su tamaño), se puede acceder al elemento (n + 1) simplemente agregando el tamaño del objeto a la dirección del elemento n.
Volviendo al ejemplo del vector de enteros, al hacer a[2] el sistema simplemente accede a la posición de memoria 2*4+(dirección de a)
Una lista es una estructura formada por un objetos tipo "nodo", que contienen, en su forma más básica, un espacio para guardar un dato y un espacio para guardar un puntero hacia el siguiente nodo. No se requiere asignar espacio en tiempo de creación sino que cada nodo se va creando a medida que se lo necesite, y si bien son mucho más flexibles que un vector, también son más lentas debido a que para acceder a a[1] tengo que leer el puntero almacenado en a[0], y seguirlo (ya no es una simple suma de las direcciones de memoria)
Volviendo a hacer una comparación con Java, un vector es lo que se crea vía int[] (por ejemplo), mientras que una lista se crea como instancia de ArrayList()
Saludos. |