Estructuras de datos y algoritmos

19
Oscar Bedoya. [email protected] http://eisc.univalle.edu.co/~oscarbed/ Estructuras/ Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y Estructuras de datos y algoritmos algoritmos

description

Estructuras de datos y algoritmos. Oscar Bedoya. [email protected] http://eisc.univalle.edu.co/~oscarbed/Estructuras/ Edificio 331, 2º piso, E.I.S.C. Cola Definición. - PowerPoint PPT Presentation

Transcript of Estructuras de datos y algoritmos

Page 1: Estructuras de datos y algoritmos

Oscar Bedoya.

[email protected]

http://eisc.univalle.edu.co/~oscarbed/Estructuras/

Edificio 331, 2º piso, E.I.S.C.

Estructuras de datos y Estructuras de datos y algoritmosalgoritmos

Page 2: Estructuras de datos y algoritmos

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 3: Estructuras de datos y algoritmos

Cola

Definición

TDA Cola

Descripción:

El TDA Cola se caracteriza porque el primero en entrar es el primero en salir (Estructura FIFO)

Invariante: Cola=(elem, cab, col), elem=<elem0, elem1, . . . , elemn-1> л ( i, 0 <= i < n, elemi Tipo) л elem0=col л elemn-1

=cab

Page 4: Estructuras de datos y algoritmos

Cola

Operaciones: Cola (Constructor)MeterSacarImprimir colaBuscar elemento en la colaEs una cola vacía?

Page 5: Estructuras de datos y algoritmos

Cola

A W

cola

cabecera

Page 6: Estructuras de datos y algoritmos

A W

cola

cabecera

A W

cola

cabecera

X

Cola

Page 7: Estructuras de datos y algoritmos

A W

cola

cabecera

X

A

cola

cabecera

X

Cola

Page 8: Estructuras de datos y algoritmos

•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 9: Estructuras de datos y algoritmos

•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 10: Estructuras de datos y algoritmos

•Meter( La cola no está vacía)•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente, al siguiente del nodo cabecera

•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado

cola

cabecera

W

cola

cabecera

W X

Cola

Page 11: Estructuras de datos y algoritmos

•Sacar

cola

cabecera

W X

cola

cabecera

X

Cola

Page 12: Estructuras de datos y algoritmos

•Imprimir datos

Cola

Page 13: Estructuras de datos y algoritmos

•Está una 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 14: Estructuras de datos y algoritmos

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

Nodo(Object o, Nodo n) { dato=o; siguiente=n; }}

Cola

Page 15: Estructuras de datos y algoritmos

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 16: Estructuras de datos y algoritmos

•Está una 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 17: Estructuras de datos y algoritmos

•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); nuevo.siguiente=null; cabecera.siguiente=nuevo; cola.siguiente=nuevo; }

Cola

Page 18: Estructuras de datos y algoritmos

•Se crea un nuevo nodo con el dato que se desee colocar y con siguiente, al siguiente del nodo cabecera

•El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado

else { nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; } }

Cola

Page 19: Estructuras de datos y algoritmos

public void sacar() { Nodo borrar=cola.siguiente;

if(cabecera.siguiente==cola.siguiente){ cabecera.siguiente=null; cola.siguiente=null; } else{ Nodo aux=cabecera; while( aux.siguiente!=borrar) aux=aux.siguiente; aux.siguiente=null; cola.siguiente=aux; } }

Cola