Top Banner
Estructuras de Datos. Ejercicios Algoritmos Departamento de Computación Universidade da Coruña 19 de octubre de 2011 Algoritmos Estructuras de Datos. Ejercicios
24

Seminario 2

Aug 13, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Seminario 2

Estructuras de Datos. Ejercicios

Algoritmos

Departamento de ComputaciónUniversidade da Coruña

19 de octubre de 2011

Algoritmos Estructuras de Datos. Ejercicios

Page 2: Seminario 2

Ejercicio 1: Colas

A partir de la siguiente estructura de datos para la implementación delistas enlazadas:

t ipo PNodo = puntero a NodoNodo = registro

Elem : TipoElementoSig : PNodo

f i n registroCola = PNodo

Algoritmos Estructuras de Datos. Ejercicios

Page 3: Seminario 2

Ejercicio 1: Colas

A) Escriba el pseudocódigo de las siguientes operaciones:

CrearCola(p) que crea una cola vacía.EsColaVacia(p) que comprueba si la cola está vacía.Insertar(x,p) que inserta x en la cola.Primero(p) que devuelve el elemento de la cabeza de la cola.Sacar(p) que elimina la cabeza de la cola.

Si utilizase algún procedimiento auxiliar, refleje también supseudocódigo.

B) Indique, razonando su respuesta sobre el pseudocódigo, lacomplejidad computacional de cada una de las operacionesanteriores.

Algoritmos Estructuras de Datos. Ejercicios

Page 4: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearCola ( p )p := n i l

f i n procedimiento

funcion EsColaVacia ( p ) : t e s tdevolver p = n i l

f i n funcion

Algoritmos Estructuras de Datos. Ejercicios

Page 5: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearCola ( p )p := n i l {O(1)}

f i n procedimiento

funcion EsColaVacia ( p ) : t e s tdevolver p = n i l

f i n funcion

Algoritmos Estructuras de Datos. Ejercicios

Page 6: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearCola ( p )p := n i l {O(1)}

f i n procedimiento {O(1)}

funcion EsColaVacia ( p ) : t e s tdevolver p = n i l

f i n funcion

Algoritmos Estructuras de Datos. Ejercicios

Page 7: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearCola ( p )p := n i l {O(1)}

f i n procedimiento {O(1)}

funcion EsColaVacia ( p ) : t e s tdevolver p = n i l {O(1)}

f i n funcion

Algoritmos Estructuras de Datos. Ejercicios

Page 8: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearCola ( p )p := n i l {O(1)}

f i n procedimiento {O(1)}

funcion EsColaVacia ( p ) : t e s tdevolver p = n i l {O(1)}

f i n funcion {O(1)}

Algoritmos Estructuras de Datos. Ejercicios

Page 9: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearNodo ( x , tmp )nuevo ( tmp ) ;si tmp = n i l entonces

error Memoria agotadasino

tmp ^ . Elem := x ;tmp ^ . Sig := n i l ;

f i n procedimiento

procedimiento I n s e r t a r ( x , p )CrearNodo ( x , tmp ) ;si EsColaVacia ( p ) entonces

p := tmp ;sino

q := p ;mientras q ^ . Sig <> n i l hacer

q := q ^ . Sig ;q ^ . Sig := tmp ;

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 10: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearNodo ( x , tmp )nuevo ( tmp ) ; {O(1)}si tmp = n i l entonces

error Memoria agotada {O(1)}sino

tmp ^ . Elem := x ; {O(1)}tmp ^ . Sig := n i l ; {O(1)}

f i n procedimiento

procedimiento I n s e r t a r ( x , p )CrearNodo ( x , tmp ) ;si EsColaVacia ( p ) entonces

p := tmp ;sino

q := p ;mientras q ^ . Sig <> n i l hacer

q := q ^ . Sig ;q ^ . Sig := tmp ;

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 11: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearNodo ( x , tmp )nuevo ( tmp ) ; {O(1)}si tmp = n i l entonces {O(1)}

error Memoria agotada {O(1)}sino

tmp ^ . Elem := x ; {O(1)}tmp ^ . Sig := n i l ; {O(1)}

f i n procedimiento

procedimiento I n s e r t a r ( x , p )CrearNodo ( x , tmp ) ;si EsColaVacia ( p ) entonces

p := tmp ;sino

q := p ;mientras q ^ . Sig <> n i l hacer

q := q ^ . Sig ;q ^ . Sig := tmp ;

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 12: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearNodo ( x , tmp )nuevo ( tmp ) ; {O(1)}si tmp = n i l entonces {O(1)}

error Memoria agotada {O(1)}sino

tmp ^ . Elem := x ; {O(1)}tmp ^ . Sig := n i l ; {O(1)}

f i n procedimiento {O(1)}

procedimiento I n s e r t a r ( x , p )CrearNodo ( x , tmp ) ;si EsColaVacia ( p ) entonces

p := tmp ;sino

q := p ;mientras q ^ . Sig <> n i l hacer

q := q ^ . Sig ;q ^ . Sig := tmp ;

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 13: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearNodo ( x , tmp )nuevo ( tmp ) ; {O(1)}si tmp = n i l entonces {O(1)}

error Memoria agotada {O(1)}sino

tmp ^ . Elem := x ; {O(1)}tmp ^ . Sig := n i l ; {O(1)}

f i n procedimiento {O(1)}

procedimiento I n s e r t a r ( x , p )CrearNodo ( x , tmp ) ; {O(1)}si EsColaVacia ( p ) entonces

p := tmp ;sino

q := p ;mientras q ^ . Sig <> n i l hacer

q := q ^ . Sig ;q ^ . Sig := tmp ;

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 14: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearNodo ( x , tmp )nuevo ( tmp ) ; {O(1)}si tmp = n i l entonces {O(1)}

error Memoria agotada {O(1)}sino

tmp ^ . Elem := x ; {O(1)}tmp ^ . Sig := n i l ; {O(1)}

f i n procedimiento {O(1)}

procedimiento I n s e r t a r ( x , p )CrearNodo ( x , tmp ) ; {O(1)}si EsColaVacia ( p ) entonces

p := tmp ; {O(1)}sino

q := p ; {O(1)}mientras q ^ . Sig <> n i l hacer

q := q ^ . Sig ; {O(1)}q ^ . Sig := tmp ; {O(1)}

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 15: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearNodo ( x , tmp )nuevo ( tmp ) ; {O(1)}si tmp = n i l entonces {O(1)}

error Memoria agotada {O(1)}sino

tmp ^ . Elem := x ; {O(1)}tmp ^ . Sig := n i l ; {O(1)}

f i n procedimiento {O(1)}

procedimiento I n s e r t a r ( x , p )CrearNodo ( x , tmp ) ; {O(1)}si EsColaVacia ( p ) entonces

p := tmp ; {O(1)}sino

q := p ; {O(1)}mientras q ^ . Sig <> n i l hacer {O(n)}

q := q ^ . Sig ; {O(1)}q ^ . Sig := tmp ; {O(1)}

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 16: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearNodo ( x , tmp )nuevo ( tmp ) ; {O(1)}si tmp = n i l entonces {O(1)}

error Memoria agotada {O(1)}sino

tmp ^ . Elem := x ; {O(1)}tmp ^ . Sig := n i l ; {O(1)}

f i n procedimiento {O(1)}

procedimiento I n s e r t a r ( x , p )CrearNodo ( x , tmp ) ; {O(1)}si EsColaVacia ( p ) entonces {O(1)}

p := tmp ; {O(1)}sino

q := p ; {O(1)}mientras q ^ . Sig <> n i l hacer {O(n)}

q := q ^ . Sig ; {O(1)}q ^ . Sig := tmp ; {O(1)}

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 17: Seminario 2

Ejercicio 1: Resolución

procedimiento CrearNodo ( x , tmp )nuevo ( tmp ) ; {O(1)}si tmp = n i l entonces {O(1)}

error Memoria agotada {O(1)}sino

tmp ^ . Elem := x ; {O(1)}tmp ^ . Sig := n i l ; {O(1)}

f i n procedimiento {O(1)}

procedimiento I n s e r t a r ( x , p )CrearNodo ( x , tmp ) ; {O(1)}si EsColaVacia ( p ) entonces {O(1)}

p := tmp ; {O(1)}sino

q := p ; {O(1)}mientras q ^ . Sig <> n i l hacer {O(n)}

q := q ^ . Sig ; {O(1)}q ^ . Sig := tmp ; {O(1)}

f i n procedimiento {O(n)}

Algoritmos Estructuras de Datos. Ejercicios

Page 18: Seminario 2

Ejercicio 1: Resolución

funcion Primero ( p )s i EsColaVacia ( p ) entonces

error Cola vacíasino

devolver p ^ . Elemf i n funcion

procedimiento Sacar ( p )s i EsColaVacia ( p ) entonces

error Cola vacía ;sino

tmp := p ;p := p ^ . Sig ;l i b e r a r ( tmp ) ;

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 19: Seminario 2

Ejercicio 1: Resolución

funcion Primero ( p )s i EsColaVacia ( p ) entonces

error Cola vacía {O(1)}sino

devolver p ^ . Elem {O(1)}f i n funcion

procedimiento Sacar ( p )s i EsColaVacia ( p ) entonces

error Cola vacía ;sino

tmp := p ;p := p ^ . Sig ;l i b e r a r ( tmp ) ;

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 20: Seminario 2

Ejercicio 1: Resolución

funcion Primero ( p )s i EsColaVacia ( p ) entonces {O(1)}

error Cola vacía {O(1)}sino

devolver p ^ . Elem {O(1)}f i n funcion

procedimiento Sacar ( p )s i EsColaVacia ( p ) entonces

error Cola vacía ;sino

tmp := p ;p := p ^ . Sig ;l i b e r a r ( tmp ) ;

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 21: Seminario 2

Ejercicio 1: Resolución

funcion Primero ( p )s i EsColaVacia ( p ) entonces {O(1)}

error Cola vacía {O(1)}sino

devolver p ^ . Elem {O(1)}f i n funcion {O(1)}

procedimiento Sacar ( p )s i EsColaVacia ( p ) entonces

error Cola vacía ;sino

tmp := p ;p := p ^ . Sig ;l i b e r a r ( tmp ) ;

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 22: Seminario 2

Ejercicio 1: Resolución

funcion Primero ( p )s i EsColaVacia ( p ) entonces {O(1)}

error Cola vacía {O(1)}sino

devolver p ^ . Elem {O(1)}f i n funcion {O(1)}

procedimiento Sacar ( p )s i EsColaVacia ( p ) entonces

error Cola vacía ; {O(1)}sino

tmp := p ; {O(1)}p := p ^ . Sig ; {O(1)}l i b e r a r ( tmp ) ; {O(1)}

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 23: Seminario 2

Ejercicio 1: Resolución

funcion Primero ( p )s i EsColaVacia ( p ) entonces {O(1)}

error Cola vacía {O(1)}sino

devolver p ^ . Elem {O(1)}f i n funcion {O(1)}

procedimiento Sacar ( p )s i EsColaVacia ( p ) entonces {O(1)}

error Cola vacía ; {O(1)}sino

tmp := p ; {O(1)}p := p ^ . Sig ; {O(1)}l i b e r a r ( tmp ) ; {O(1)}

f i n procedimiento

Algoritmos Estructuras de Datos. Ejercicios

Page 24: Seminario 2

Ejercicio 1: Resolución

funcion Primero ( p )s i EsColaVacia ( p ) entonces {O(1)}

error Cola vacía {O(1)}sino

devolver p ^ . Elem {O(1)}f i n funcion {O(1)}

procedimiento Sacar ( p )s i EsColaVacia ( p ) entonces {O(1)}

error Cola vacía ; {O(1)}sino

tmp := p ; {O(1)}p := p ^ . Sig ; {O(1)}l i b e r a r ( tmp ) ; {O(1)}

f i n procedimiento {O(1)}

Algoritmos Estructuras de Datos. Ejercicios