Professional Documents
Culture Documents
cabeza
NULL
LISTAS ENCADENADAS
Declaración de un nodo
• En C++ se puede definir un nodo mediante un nuevo tipo de dato con las
palabras reservadas struct o class que contiene las dos partes de un
nodo:
struct Nodo class Nodo {
{ public:
int dato; int dato;
Nodo *enlace; Nodo *enlace;
}; // constructor
};
• La definición puede utilizar struct, que es un tipo especial de clase. De
hecho, si se cambia la palabra reservada struct por class, la definición
sigue siendo la misma.
LISTAS ENCADENADAS
• Dado que los tipos de datos que se pueden incluir en una lista pueden
ser de cualquier tipo (enteros, reales, caracteres o incluso cadenas), con
el objeto de que el tipo de dato de cada nodo pueda cambiar con
facilidad, se suele utilizar una sentencia typedef para definir el nombre
de elemento como un sinónimo del tipo de dato de cada cadena, como
se muestra a continuación:
LISTAS ENCADENADAS
ptr_cabeza
• ptr_cola
El apuntador nulo
• Se utiliza, normalmente, en dos situaciones:
Usar el apuntador nulo en el campo de enlace o siguiente del nodo final de
la lista encadenada.
Cuando una lista encadenada no tiene ningún nodo, se utiliza el apuntador
NULL como apuntador de cabeza y de cola. Esta lista se denomina lista
vacia. Por ejemplo:
nodo *ptr_cabeza;
ptr_cabeza = NULL;
ptr_cabeza
LISTAS ENCADENADAS
• 5 NULL
primero
• 3 • 5 NULL
• 4 • 3 • 5
LISTAS ENCADENADAS
• 8 • 25 • 78 NULL
• Pasos 1 y 2
• 4
insertar_ptr
• 8 • 25 • 78
cabeza_ptr
Código C++
insertar_ptr = new Nodo;
insertar_ptr -> dato = entrada;
• Paso 3.- el campo enlace (siguiente) del nuevo nodo apunta a la cabeza actual de la lista.
LISTAS ENCADENADAS
• 4 •
insertar_ptr
8 • 25 • 78
•
cabeza_ptr
Paso 4. se cambia el apuntador de cabeza para apuntar al nuevo nodo creado; es decir,
el apuntador de cabeza apunta al mismo sitio que apunta insertar_ptr.
•
insertar_ptr 4 • 8 • 25 • 78 NULL
•
cabeza_ptr
• 4 • 8 • 25 • 78 NULL
cabeza_ptr
LISTAS ENCADENADAS
• 8 • 25 • 78 NULL
75 •
• Pasos:
Asignar un nuevo nodo apuntado por el apuntador insertar_ptr.
Situar el nuevo elemento en el campo dato (Info) del nuevo nodo).
Hacer que el campo enlace siguiente del nuevo nodo apunte al nodo que va
después de la posición del nuevo nodo (o bien a NULL si no hay ningún nodo
después de la nueva posición).
Crear un apuntador al nodo que está antes de la posición deseada para el nuevo
nodo y hacer que anterior_ptr -> siguiente apunte al nuevo nodo que acaba de
crear.
LISTAS ENCADENADAS
8 • 25 • 78 NULL
• no se utiliza
cabeza_ptr
• 75 •
insertar_ptr
• Paso 3
Código C++ insertar_ptr -> siguiente = anterior_ptr -> siguiente;
LISTAS ENCADENADAS
anterior_ptr
8 • 25 • 78 NULL
• 75 •
insertar_ptr
Paso 4
anterior_ptr •
8 • 25 • 78 NULL
insertar_ptr • 75 •
LISTAS ENCADENADAS