Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
-
Upload
alberto-miranda-villalba -
Category
Documents
-
view
229 -
download
0
Transcript of Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
![Page 1: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/1.jpg)
Estructuras de datos
Fundamentos de análisis y diseño de algoritmos
![Page 2: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/2.jpg)
Listas enlazadas
Definición
Una lista enlazada es una colección de elementos llamados nodos. Cada nodo contiene un dato y una referencia al siguiente nodo.
![Page 3: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/3.jpg)
Listas enlazadas
23
Cada nodo se representa por medio de dos campos:
Campo dato: contiene el valor del nodo
Campo siguiente: indica cuál es el nodo con el que se enlaza
dato siguiente
99
dato siguiente
4
dato siguiente
![Page 4: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/4.jpg)
Listas enlazadas
23 6 99
Lista enlazada con 3 nodos.
Los nodos tienen datos de tipo entero.
Nodo 1
Dato: 23
Siguiente: Nodo 2
Nodo 2
Dato: 6
Siguiente: Nodo 3
Nodo 3
Dato: 99
Siguiente: null
(indica que es el fin de la lista)
![Page 5: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/5.jpg)
Listas enlazadas
Definición: Nodo cabecera
E A R E
Al primer nodo se le llama cabecera y sirve como punto de referencia en la lista.
No contiene ningún dato
![Page 6: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/6.jpg)
Listas enlazadas
Las operaciones sobre una lista enlazada son:
•Crear lista•Insertar nodo al inicio•Eliminar nodo al inicio•Imprimir datos•Es una lista vacía?
![Page 7: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/7.jpg)
Listas enlazadas
•Crear lista
Al crear una lista, se crea el nodo cabecera.
El nodo cabecera tiene como dato null y como siguiente null.
![Page 8: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/8.jpg)
Listas enlazadas
Cada nodo se representa por medio de dos campos:
Campo dato: contiene el valor del nodo
Campo siguiente: indica cuál es el nodo con el que se enlaza
public class Nodo{
Object dato; Nodo siguiente;
Nodo(Object o) { dato=o; siguiente=null; }
}
![Page 9: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/9.jpg)
Listas enlazadas
Crear lista
Al crear una lista, se crea el nodo cabecera.
El nodo cabecera tiene como dato null y como siguiente null.
public class Lista{
Nodo cabecera;
Lista(){
cabecera=new Nodo(null);
}
. . .
}
![Page 10: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/10.jpg)
Listas enlazadas
•¿Lista vacía?
Cuando la lista está vacía el campo siguiente de la cabecera es null
![Page 11: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/11.jpg)
Listas enlazadas
•¿Lista vacía?
Cuando la lista está vacía el campo siguiente de la cabecera es null
public boolean estaVacia(){
if (cabecera.siguiente==null){
return true;
}
else{
return false;
}
}
![Page 12: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/12.jpg)
public class Lista{
Nodo cabecera;
Lista(){
cabecera=new Nodo(null);
}
public boolean estaVacia(){ if (cabecera.siguiente==null){ return true; } else{ return false; }
}
![Page 13: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/13.jpg)
Listas enlazadas
•Insertar nodo al inicio(La lista está vacía)
W
•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null
•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado
![Page 14: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/14.jpg)
Listas enlazadas
Insertar nodo al inicio(La lista está vacía)
•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null
•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado
void insertar(Object o)
{
Nodo nuevo=new Nodo(null);
if ( estaVacia() ) {
nuevo=new Nodo(o);
cabecera.siguiente=nuevo;
}
![Page 15: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/15.jpg)
Listas enlazadas
•Insertar nodo al inicio( La lista no está vacía)
W
•Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera
•Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando
A W
![Page 16: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/16.jpg)
Listas enlazadas
Insertar nodo al inicio(La lista no está vacía)
•Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera
•Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando
if ( estaVacia() ) {
nuevo=new Nodo(o);
cabecera.siguiente=nuevo;
}
else{
nuevo=new Nodo(o);
nuevo.siguiente=cabecera.siguiente;
cabecera.siguiente=nuevo;
}
}
![Page 17: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/17.jpg)
Listas enlazadas
•Eliminar nodo al inicio
A W
W
•Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo
![Page 18: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/18.jpg)
Listas enlazadas
Eliminar nodo al inicio
•Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo
public void eliminar() { Nodo borrar=cabecera.siguiente; cabecera.siguiente=borrar.siguiente; borrar.siguiente=null;
}
![Page 19: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/19.jpg)
Listas enlazadas
•Imprimir datos
![Page 20: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/20.jpg)
Listas enlazadas
•Imprimir datos public void imprimir() { Nodo actual=new Nodo(null);
if (estaVacia()) System.out.println(“La lista esta vacia"); else { actual=cabecera.siguiente;
System.out.println("\n"); while( actual != null){ System.out.print( actual.dato ); actual=actual.siguiente; }
}}
![Page 21: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/21.jpg)
Listas enlazadas
•Desarrolle la operación eliminarAlFinal()
![Page 22: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/22.jpg)
Listas enlazadas
•Desarrolle la operación eliminarAlFinal()•Desarrolle la operación insertAt(Object o, int i)
![Page 23: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/23.jpg)
Listas enlazadas
•Desarrolle la operación eliminarAlFinal()•Desarrolle la operación insertAt(Object o, int i)•Indique la complejidad de las operaciones:
Crear listaInsertar nodo al inicioEliminar nodo al inicioImprimir datos¿Lista vacía?eliminarAlFinal()insertAt(Object o, int i)
![Page 24: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/24.jpg)
Pila
![Page 25: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/25.jpg)
Pila
Definición
Una pila es una estructura de datos en la que el último elemento que se coloca en la pila, será el primero que se puede sacar
En una pila sólo se puede adicionar al tope y solo se puede retirar de él.
![Page 26: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/26.jpg)
Pila
Definición
La pila es una estructura LIFO (Last In – First Out)
![Page 27: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/27.jpg)
Se utiliza la Lista para implementar la Pila
Pila
5 9
Nodo en el tope de la pila
![Page 28: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/28.jpg)
Pila
5 9
Nodo en el tope de la pila
5
9
Nodo en el tope de la pila
![Page 29: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/29.jpg)
Pila
Operaciones:
•Pila (Constructor)•Push•Pop•Imprimir pila•Buscar elemento en la pila•¿pila vacía?
![Page 30: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/30.jpg)
•Pila (Constructor)
Al crear una pila, se crea el nodo cabecera.
El nodo cabecera tiene como dato null y como siguiente null.
Pila
![Page 31: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/31.jpg)
Cada nodo se representa por medio de dos campos:
Campo dato: contiene el valor del nodo
Campo siguiente: indica cuál es el nodo con el que se enlaza
class Nodo{
Object dato; Nodo siguiente;
Nodo(Object o) { dato=o; siguiente=null; }
}
Pila
![Page 32: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/32.jpg)
Crear Pila
Al crear una Pila, se crea el nodo cabecera.
El nodo cabecera tiene como dato null y como siguiente null.
class Pila{
Nodo cabecera;
Pila(){ cabecera=new Nodo(null); }
…
}
Pila
![Page 33: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/33.jpg)
•¿pila vacía?
Cuando la pila está vacía el campo siguiente de la cabecera es null
Pila
![Page 34: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/34.jpg)
•Está una pila vacía?
Cuando la pila está vacía el campo siguiente de la cabecera es null
public boolean estaVacia() { if (cabecera.siguiente==null) { return true; } else{ return false; } }
Pila
![Page 35: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/35.jpg)
Operación: push
Insertar un nuevo nodo a la pila. El elemento que se inserta, pasa a ser el tope de la pila
Pila
![Page 36: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/36.jpg)
•Push ( La Pila está vacía)
•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null
•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado
23
Pila
![Page 37: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/37.jpg)
•Push( La pila no está vacía)
•Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera
•Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando
23 51
23
Pila
![Page 38: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/38.jpg)
Push (La pila está vacía)
•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null
•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado
public void push(Object o) { Nodo nuevo=new Nodo(null);
if ( estaVacia() ) { nuevo=new Nodo(o); cabecera.siguiente=nuevo; } else { nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; } }
Pila
![Page 39: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/39.jpg)
Push(La pila no está vacía)
•Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera
•Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando
public void push(Object o) { Nodo nuevo=new Nodo(null);
if ( estaVacia() ) { nuevo=new Nodo(o); cabecera.siguiente=nuevo; } else { nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; } }
Pila
![Page 40: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/40.jpg)
Operación: pop
Eliminar un elemento de la pila. El elemento que se elimina es el que esté en el tope.
Pop retorna el campo dato del elemento eliminado
Pila
![Page 41: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/41.jpg)
•Pop
•Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo
51
23
23
Pila
![Page 42: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/42.jpg)
Pop
•Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo
public Object pop() { if (cabecera.siguiente==null) System.out.println("LA PILA ESTA VACIA");
else{ Nodo borrar=cabecera.siguiente; cabecera.siguiente=borrar.siguiente; borrar.siguiente=null; return borrar.dato; } }
Pila
![Page 43: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/43.jpg)
Pila
•Desarrolle la operación BuscarEnPila(Object e). La pila no tiene operaciones de consulta, se debe utilizar otra pila para almacenar los elementos que salen cuando se hace push. La pila original debe quedar con todos los elementos dados.
•Desarrolle la operación Imprimir().
•Muestre la complejidad de las operaciones BuscarEnPila(Object e) e Imprimir()
![Page 44: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/44.jpg)
Cola
![Page 45: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/45.jpg)
Cola
Definición
Una cola es un conjunto ordenado de elementos de un tipo base. Los elementos se insertan a la cola por la parte posterior y se sacan por la parte delantera
![Page 46: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/46.jpg)
Cola
Operaciones:
•Cola (Constructor)•Meter•Sacar•Imprimir cola•Buscar elemento en la cola•Es una cola vacía?
![Page 47: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/47.jpg)
Cola
A W
cola
cabecera
Se manejan dos nodos centinela, uno para cola,
por donde entran los elementos, y otro
cabecera, por donde salen
![Page 48: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/48.jpg)
A W
cola
cabecera
A W
cola
cabecera
X
Cola
Entra el elemento x a la cola
![Page 49: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/49.jpg)
A W
cola
cabecera
X
A
cola
cabecera
X
Cola
Sale un elemento de la cola
![Page 50: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/50.jpg)
•Crear cola
Al crear una lista, se crean el nodo cola y el nodo cabecera.
Ambos tienen como dato null y como siguiente null.
cola
cabecera
Cola
![Page 51: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/51.jpg)
Cada nodo se representa por medio de dos campos:
Campo dato: contiene el valor del nodo
Campo siguiente: indica cuál es el nodo con el que se enlaza
class Nodo{
Object dato; Nodo siguiente;
Nodo(Object o) { dato=o; siguiente=null; }
}
Cola
![Page 52: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/52.jpg)
Al crear una lista, se crean el nodo cola y el nodo cabecera.
Ambos tienen como dato null y como siguiente null.
class Cola{
Nodo cabecera; Nodo cola;
Cola() { cabecera=new Nodo(null); cola=new Nodo(null); }
}
Cola
![Page 53: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/53.jpg)
•¿cola vacía?
Cuando la cola está vacía el campo siguiente de la cabecera es null y el campo siguiente de la cola es null
cola
cabecera
Cola
![Page 54: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/54.jpg)
•¿cola vacía?
Cuando la cola está vacía el campo siguiente de la cabecera es null. El campo siguiente de la cola también es null
public boolean estaVacia(){
if (cabecera.siguiente==null) {
return true;
}
else{
return false;
}
}
Cola
![Page 55: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/55.jpg)
•Meter(La cola está vacía)•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null
•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado
•El campo siguiente del nodo cola pasa de ser null a ser el nodo que estamos insertado
cola
cabecera
cola
cabecera
W
Cola
![Page 56: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/56.jpg)
•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null
•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado
•El campo siguiente del nodo cola pasa de ser null a ser el nodo que estamos insertado
void meter(Object o) { Nodo nuevo=new Nodo(null);
if ( estaVacia() ) { nuevo=new Nodo(o); cabecera.siguiente=nuevo; cola.siguiente=nuevo; }
Cola
![Page 57: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/57.jpg)
•Meter(La cola no está vacía)
cola
cabecera
W
cola
cabecera
W X
Cola
![Page 58: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/58.jpg)
else { nuevo=new Nodo(o); nuevo.siguiente=cola.siguiente; cola.siguiente=nuevo; } }
Cola
![Page 59: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/59.jpg)
•Sacar
cola
cabecera
W X
cola
cabecera
X
Cola
![Page 60: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/60.jpg)
public Object sacar() { Nodo borrar=cabecera.siguiente; if(cabecera.siguiente==cola.siguiente){ cabecera.siguiente=null; cola.siguiente=null; borrar.siguiente=null; return borrar.dato; } else{ Nodo aux=cola.siguiente; while( aux.siguiente!=borrar) aux=aux.siguiente; aux.siguiente=null; cabecera.siguiente=aux; return borrar.dato; } }
Cola
![Page 61: Estructuras de datos Fundamentos de análisis y diseño de algoritmos.](https://reader034.fdocuments.es/reader034/viewer/2022051316/5665b4bb1a28abb57c939d89/html5/thumbnails/61.jpg)
Cola
•Desarrolle la operación imprimirOrden() que muestra los valores en el orden en que se deben “atender”. La cola debe quedar con los elementos originales.