enlazadas se implementan como listas de enlace doble (cada nodo contiene una referencia al siguiente nodo en 
la lista y una referencia al nodo anterior en la lista). La clase 

LinkedList

 de Java es una implementación de lista 

de enlace doble.

Tip de rendimiento 17.4

Por lo general, los elementos de un arreglo están contiguos en memoria. Esto permite un acceso inmediato a cualquier 
elemento del arreglo, ya que la dirección de cualquier elemento puede calcularse directamente como su desplazamien-
to a partir del inicio del arreglo. Las listas enlazadas no permiten dicho acceso inmediato a sus elementos; para acce-
der a ellos se tiene que recorrer la lista desde su parte inicial (o desde la parte fi nal en una lista de enlace doble).

El programa de la fi guras 17.3 a 17.5 utiliza un objeto de nuestra clase 

Lista

 para manipular una lista de 

objetos misceláneos. El programa consta de cuatro clases: 

NodoLista

 (fi gura 17.3, líneas 6 a 37), 

Lista

 (fi gura 

17.3, líneas 40 a 147), 

ExcepcionListaVacia

 (fi gura 17.4) y 

PruebaLista

 (fi gura 17.5). Las clases 

Lista

NodoLista

 y 

ExcepcionListaVacia

 están colocadas en el paquete 

com.deitel.jhtp7.cap17

, para que puedan 

reutilizarse a lo largo de este capítulo. Hay una lista enlazada de objetos 

NodoLista

 encapsulada en cada objeto 

Lista

. [

Nota: muchas de las clases en este capítulo se declaran en el paquete 

com.deitel.jhtp7.cap17

. Cada 

una de estas clases debe compilarse con la opción de línea de comandos 

–d

 para 

javac

 Cuando compile las clases 

que no están en este paquete y cuando ejecute los programas, asegúrese de utilizar la opción 

–classpath

 para 

javac

 y 

java

, respectivamente].

 1 

// Fig. 17.3: Lista.java

 2 

// Definiciones de las clases NodoLista y Lista.

 3 

package

 com.deitel.jhtp7.cap17;

 4 
 5 

// clase para representar un nodo en una lista

 6 

class

 NodoLista 

 7 

{

 8  

// miembros de acceso del paquete; Lista puede acceder a ellos directamente

 9  

Object datos; 

// los datos para este nodo

 10  

NodoLista siguienteNodo; 

// referencia al siguiente nodo en la lista

 11
 12  

// el constructor crea un objeto NodoLista que hace referencia al objeto

 13  

NodoLista( Object objeto ) 

 14  

{

 15  

 

this

( objeto, 

null

 ); 

 16  

}

// fin del constructor de NodoLista con un argumento 

 17 
 18  

// el constructor crea un objeto NodoLista que hace referencia a 

 19  

// un objeto Object y al siguiente objeto NodoLista

 20  

NodoLista( Object objeto, NodoLista nodo )

 21  

{

 22  

 

datos = objeto; 

 

 23  

 

siguienteNodo = nodo; 

 24  

}

 // fin del constructor de NodoLista con dos argumentos

 25 
 26  

// devuelve la referencia a datos en el nodo

 27  

Object obtenerObject() 

 28  

{

 29  

 

return

 datos; 

// devuelve el objeto Object en este nodo

 30  

}

// fin del método obtenerObject

 31 
 32  

// devuelve la referencia al siguiente nodo en la lista

 33  

NodoLista obtenerSiguiente() 

 34  

{

 35  

 

return

 siguienteNodo; 

// obtiene el siguiente nodo

Figura 17.3

  |  Declaraciones de las clases 

NodoLista

 y 

Lista

. (Parte 1 de 3).

17.6 Listas 

enlazadas 

719

17_MAQ_CAP_17_DEITEL.indd719

4/19/081:30:02AM