La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Estructuras de datos Fundamentos de análisis y diseño de algoritmos.

Presentaciones similares


Presentación del tema: "Estructuras de datos Fundamentos de análisis y diseño de algoritmos."— Transcripción de la presentación:

1 Estructuras de datos Fundamentos de análisis y diseño de algoritmos

2 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.

3 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

4 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)

5 Listas enlazadas Definición: Nodo cabecera E A RE Al primer nodo se le llama cabecera y sirve como punto de referencia en la lista. No contiene ningún dato

6 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?

7 Listas enlazadas Crear lista Al crear una lista, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null.

8 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; }

9 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); }... }

10 Listas enlazadas ¿Lista vacía? Cuando la lista está vacía el campo siguiente de la cabecera es null

11 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; }

12 public class Lista{ Nodo cabecera; Lista(){ cabecera=new Nodo(null); } public boolean estaVacia(){ if (cabecera.siguiente==null){ return true; } else{ return false; }

13 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

14 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; }

15 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 AW

16 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; }

17 Listas enlazadas Eliminar nodo al inicio AW W Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo

18 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; }

19 Listas enlazadas Imprimir datos

20 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; }

21 Listas enlazadas Desarrolle la operación eliminarAlFinal()

22 Listas enlazadas Desarrolle la operación eliminarAlFinal() Desarrolle la operación insertAt(Object o, int i)

23 Listas enlazadas Desarrolle la operación eliminarAlFinal() Desarrolle la operación insertAt(Object o, int i) Indique la complejidad de las operaciones: Crear lista Insertar nodo al inicio Eliminar nodo al inicio Imprimir datos ¿Lista vacía? eliminarAlFinal() insertAt(Object o, int i)

24 Pila

25 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.

26 Pila Definición La pila es una estructura LIFO (Last In – First Out)

27 Se utiliza la Lista para implementar la Pila Pila 5 9 Nodo en el tope de la pila

28 Pila 5 9 Nodo en el tope de la pila 5 9

29 Pila Operaciones: Pila (Constructor) Push Pop Imprimir pila Buscar elemento en la pila ¿pila vacía?

30 Pila (Constructor) Al crear una pila, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null. Pila

31 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

32 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

33 ¿pila vacía? Cuando la pila está vacía el campo siguiente de la cabecera es null Pila

34 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

35 Operación: push Insertar un nuevo nodo a la pila. El elemento que se inserta, pasa a ser el tope de la pila Pila

36 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

37 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

38 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

39 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

40 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

41 Pop Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo 51 23 Pila

42 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

43 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()

44 Cola

45 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

46 Cola Operaciones: Cola (Constructor) Meter Sacar Imprimir cola Buscar elemento en la cola Es una cola vacía?

47 Cola A W cola cabecera Se manejan dos nodos centinela, uno para cola, por donde entran los elementos, y otro cabecera, por donde salen

48 A W cola cabecera A W cola cabecera X Cola Entra el elemento x a la cola

49 A W cola cabecera X A cola cabecera X Cola Sale un elemento de la cola

50 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

51 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

52 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

53 ¿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

54 ¿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

55 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

56 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

57 Meter( La cola no está vacía ) cola cabecera W cola cabecera W X Cola

58 else { nuevo=new Nodo(o); nuevo.siguiente=cola.siguiente; cola.siguiente=nuevo; } Cola

59 Sacar cola cabecera W X cola cabecera X Cola

60 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

61 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.


Descargar ppt "Estructuras de datos Fundamentos de análisis y diseño de algoritmos."

Presentaciones similares


Anuncios Google