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