Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuras de Datos
Tema: Listas Doblemente Encadenadas
Nodoanterior
Nodosiguiente
Nododato
EJEMPLO C++:
nodo
Struct nodo {
int valor;
struct nodo *anterior, Nodoanterior
struct nodo *siguiente,
};
Struct nodo *cab, *cola, *nuevo;
Nodosiguiente
Nodovalor
EJEMPLO C++:
Struct nodo {
int valor;
struct nodo *anterior,
struct nodo *siguiente,
};
Struct nodo *cab, *cola, *nuevo;
001A
nuevo
Primer Nodo:
nuevo = Localizar
Direccin de la Estructura
EJEMPLO C++:
Struct nodo {
int valor;
struct nodo *anterior,
struct nodo *siguiente,
};
Struct nodo *cab, *cola, *nuevo;
001A
nuevo
nuevoanterior
Primer Nodo:
nuevo = Localizar
nuevoanterior = NULL;
NULL
Direccin de la Estructura
EJEMPLO C++:
Struct nodo {
int valor;
struct nodo *anterior,
struct nodo *siguiente,
};
Struct nodo *cab, *cola, *nuevo;
001A
Direccin de la Estructura
nuevo
nuevoanterior
Primer Nodo:
nuevo = Localizar
nuevoanterior = NULL;
nuevosiguiente = NULL;
NULL
NULL
nuevosiguiente
EJEMPLO C++:
Struct nodo {
int valor;
struct nodo *anterior,
struct nodo *siguiente,
};
Struct nodo *cab, *cola, *nuevo;
Direccin de la Estructura
001A
nuevo
nuevoanterior
NULL
50
NULL
nuevosiguiente
nuevovalor
Primer Nodo:
nuevo = Localizar
nuevoanterior = NULL;
nuevosiguiente = NULL;
Cout << Favor ingresar Datos;
Cint >> nuevovalor;
//supongamos que el usuario ingresa el Nmero 50 y Enter.
EJEMPLO C++:
Struct nodo {
int valor;
struct nodo *anterior,
struct nodo *siguiente,
};
Struct nodo *cab, *cola, *nuevo;
nuevoanterior
Direccin de la Estructura
001A
NULL
50
NULL
nuevosiguiente
nuevovalor
Primer Nodo:
nuevo
cab
nuevo = Localizar
nuevoanterior = NULL;
nuevosiguiente = NULL;
Cout << Favor ingresar Datos;
Cint >> nuevovalor;
//supongamos que el usuario ingresa el Nmero 50 y Enter.
cab = nuevo;
EJEMPLO C++:
Struct nodo {
int valor;
struct nodo *anterior,
struct nodo *siguiente,
};
Struct nodo *cab, *cola, *nuevo;
001A
Direccin de la Estructura
nuevosiguiente
nuevoanterior
NULL
50
NULL
nuevovalor
Primer Nodo:
nuevo
cab
cola
nuevo = Localizar
nuevoanterior = NULL;
nuevosiguiente = NULL;
Cout << Favor ingresar Datos;
Cint >> nuevovalor;
//supongamos que el usuario ingresa el Nmero 50 y Enter.
cab = nuevo;
cola = nuevo;
No ta:
En las listas doblemente encadenas podemos adicionar nodos
la derecha como a la izquierda.
Primer Nodo
nodo
Nodoanterior
Nodosiguiente
Alimentar a la Izquierda
Nododato
qanterior
qvalor
Alimentar a la
Derechaq
nuevo
cab
cola
q siguiente
qanterior
qvalor
q siguiente
INICIO
AGREGAR A LA IZQUIERDA
No ta:
Si desea alimentar nodos a la Izquierda la estructura se alimen
Primer Nodo
nodo
Nodoanterior
nul
l
50
nul
l
Nodosiguiente
Alimentar a la Izquierda
Nododato
qanterior
qvalor
nuevo
cab
cola
q = Localizar
q siguiente
No ta:
Si desea alimentar nodos a la Izquierda la estructura se alimen
Primer Nodo
001A
nodo
Nodoanterior
nul
l
50
nul
l
Nodosiguiente
002A
Alimentar a la Izquierda
q
nuevo
cab
cola
nul
l
qanterior
qvalor
Nododato
q siguiente
q = Localizar
qanterior = null;
Nota:
Si desea alimentar nodos a la Izquierda la estructura se alimen
Primer Nodo
001A
nodo
Nodoanterior
nul
l
50
nul
l
Nodosiguiente
002A
Alimentar a la Izquierda
q
nul
l
qanterior
nul
l
qvalor
q siguiente
Nododato
nuevo
cab
cola
q = Localizar
qanterior = null;
qsiguiente = null;
Nota:
Si desea alimentar nodos a la Izquierda la estructura se alimen
Primer Nodo
001A
nodo
Nodoanterior
nul
l
50
nul
l
Nodosiguiente
002A
Alimentar a la Izquierda
q
nul
l
qanterior
20
0
qvalor
nul
l
q siguiente
Nododato
nuevo
cab
cola
q = Localizar
qanterior = null;
qsiguiente = null;
Cout << Digitar Datos;
Cint >> qvalor; //Dato ingresa
Nota:
Vamos a Proceder a Unir los Dos Nodos as:
Nodoanterior
Primer Nodo
002A
001A
Alimentar a la Izquierda
nul
l
qanterior
20
0
qvalor
Nodosiguiente
001
A
q siguiente
nodo
nul
l
50
nul
l
Nododato
nuevo
cab
cola
q = Localizar
qanterior = null;
qsiguiente = null;
Cout << Digitar Datos;
Cint >> qvalor; //Dato ingresa
qsiguiente = cab;
Nota:
Vamos a Proceder a Unir los Dos Nodos as:
Nodoanterior
Primer Nodo
002A
001A
Alimentar a la Izquierda
nul
l
qanterior
20
0
Nodosiguiente
001
A
qvalor
q siguiente
q
nodo
002
A
50
nul
l
Nododato
nuevo
cab
cola
q = Localizar
qanterior = null;
qsiguiente = null;
Cout << Digitar Datos;
Cint >> qvalor; //Dato ingresa
qsiguiente = cab;
cabanterior = q;
No ta:
Ahora corremos la cabecera al nuevo Nodo:
Nodoanterior
Primer Nodo
002A
001A
Alimentar a la Izquierda
nul
l
qanterior
20
0
001
A
qvalor
cab
Nodosiguiente
q siguiente
nodo
002
A
50
nul
l
Nododato
nuevo
cola
q = Localizar
qanterior = null;
qsiguiente = null;
Cout << Digitar Datos;
Cint >> qvalor; //Dato ingres
qsiguiente = cab;
cabanterior = q;
cab = q;
FIN
AGREGAR A LA IZQUIERDA
INICIO
AGREGAR A LA DERECHA
Nota:
Si desea alimentar nodos a la Derecha de la estructura se alim
Primer Nodo
nodo
Nodoanterior
nul
l
50
nul
l
Nodosiguiente
Alimentar a la Derecha
Nododato
nuevo
cola
q = Localizar
qanterior
qvalor
q siguiente
Nota:
Si desea alimentar nodos a la Derecha de la estructura se alim
Primer Nodo
001A
nodo
Nodoanterior
nul
l
50
nul
l
Nododato
nuevo
q = Localizar
qanterior = null;
cola
Nodosiguiente
003b
Alimentar a la Derecha
q
nul
l
qanterior
qvalor
q siguiente
Nota:
Si desea alimentar nodos a la Derecha la estructura se alimen
Primer Nodo
001A
nodo
Nodoanterior
nul
l
50
nul
l
Nodosiguiente
003b
Nododato
nuevo
q = Localizar
qanterior = null;
qsiguiente = null;
cola
Alimentar a la Izquierda
q
nul
l
qanterior
nul
l
qvalor
q siguiente
Nota:
Si desea alimentar nodos a la Derecha de la estructura se alim
Primer Nodo
001A
nodo
Nodoanterior
nul
l
50
nul
l
Nodosiguiente
003b
Nododato
Alimentar a la Izquierda
q
nuevo
q = Localizar
cola
qanterior = null;
qsiguiente = null;
Cout << Digitar Datos;
Cint >> qvalor; //Dato ingresado 400
nul
l
qanterior
40
0
qvalor
nul
l
q siguiente
Nota:
Vamos a Proceder a Unir los Dos Nodos as:
Nodoanterior
Primer Nodo
Nodosiguiente
001A
nodo
nul
l
50
nul
l
Nododato
q = Localizar
nuevo
qanterior = null;
cola
qsiguiente = null;
Cout << Digitar Datos;
Cint >> qvalor; //Dato ingresado 200
qanterior = cola;
003b
Alimentar a la Izquierda
001
A
qanterior
40
0
qvalor
NUL
L
q siguiente
Nota:
Vamos a Proceder a Unir los Dos Nodos as:
Nodoanterior
Primer Nodo
Nodosiguiente
003b
001A
Alimentar a la Izquierda
nodo
oo2a
50
003b
001
A
qanterior
Nododato
nuevo
q = Localizar
cola
qanterior = null;
qsiguiente = null;
cout << Digitar Datos;
cint >> qvalor; //Dato ingresado 400
qanterior = cola;
colasiguiente = q;
40
0
NUL
L
qvalor
q siguiente
q
Nota:
Ahora corremos la cola al nuevo nodo as:
Nodoanterior
Primer Nodo
Nodosiguiente
003b
001A
Alimentar a la Izquierda
nodo
oo2a
50
003b
001
A
qanterior
Nododato
q = Localizar
nuevo
qanterior = null;
qsiguiente = null;
Cout << Digitar Datos;
Cint >> qvalor; //Dato ingresado 200
qanterior = cola;
colasiguiente = q;
cola = q;
40
0
NUL
L
qvalor
cola
q siguiente
FIN
AGREGAR A LA DERECHA
001A
Primer Nodo
003b
Tercer nodo
nodo
NUL
L
20
0
cab
001
A
002
A
50
003
b
001
A
40
0
NUL
L
cola
nuevo
Vemos que los apuntadores cab y cola se han movido para cada extr
Si seguimos alimentando la Lista no olvidar que cab y cola deben seg
Moviendo para el extremo que les corresponde.
GRACIAS