Estructuras de Datos. Ejercicios

Anuncio
Estructuras de Datos. Ejercicios
Algoritmos
Departamento de Computación
Universidade da Coruña
19 de octubre de 2011
Algoritmos
Estructuras de Datos. Ejercicios
Ejercicio 1: Colas
A partir de la siguiente estructura de datos para la implementación de
listas enlazadas:
t i p o PNodo = punt ero a Nodo
Nodo = r e g i s t r o
Elem : TipoElemento
Sig : PNodo
fin registro
Cola = PNodo
Algoritmos
Estructuras de Datos. Ejercicios
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 su
pseudocódigo.
B) Indique, razonando su respuesta sobre el pseudocódigo, la
complejidad computacional de cada una de las operaciones
anteriores.
Algoritmos
Estructuras de Datos. Ejercicios
Ejercicio 1: Resolución
procedimiento CrearCola ( p )
p := n i l
f i n procedimiento
funcion EsColaVacia ( p ) : t e s t
devolver p = n i l
f i n funcion
Algoritmos
Estructuras de Datos. Ejercicios
Ejercicio 1: Resolución
procedimiento CrearCola ( p )
p : = n i l {O (1)}
f i n procedimiento
funcion EsColaVacia ( p ) : t e s t
devolver p = n i l
f i n funcion
Algoritmos
Estructuras de Datos. Ejercicios
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 t
devolver p = n i l
f i n funcion
Algoritmos
Estructuras de Datos. Ejercicios
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 t
devolver p = n i l {O (1)}
f i n funcion
Algoritmos
Estructuras de Datos. Ejercicios
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 t
devolver p = n i l {O (1)}
f i n funcion {O (1)}
Algoritmos
Estructuras de Datos. Ejercicios
Ejercicio 1: Resolución
procedimiento CrearNodo ( x , tmp )
nuevo ( tmp ) ;
s i tmp = n i l entonces
e r r o r Memoria agotada
sino
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 ) ;
s i 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
Ejercicio 1: Resolución
procedimiento CrearNodo ( x , tmp )
nuevo ( tmp ) ; {O (1)}
s i tmp = n i l entonces
e r r o r 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 ) ;
s i 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
Ejercicio 1: Resolución
procedimiento CrearNodo ( x , tmp )
nuevo ( tmp ) ; {O (1)}
s i tmp = n i l entonces {O (1)}
e r r o r 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 ) ;
s i 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
Ejercicio 1: Resolución
procedimiento CrearNodo ( x , tmp )
nuevo ( tmp ) ; {O (1)}
s i tmp = n i l entonces {O (1)}
e r r o r 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 ) ;
s i 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
Ejercicio 1: Resolución
procedimiento CrearNodo ( x , tmp )
nuevo ( tmp ) ; {O (1)}
s i tmp = n i l entonces {O (1)}
e r r o r 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)}
s i 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
Ejercicio 1: Resolución
procedimiento CrearNodo ( x , tmp )
nuevo ( tmp ) ; {O (1)}
s i tmp = n i l entonces {O (1)}
e r r o r 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)}
s i 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
Ejercicio 1: Resolución
procedimiento CrearNodo ( x , tmp )
nuevo ( tmp ) ; {O (1)}
s i tmp = n i l entonces {O (1)}
e r r o r 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)}
s i 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
{O (n)}
Estructuras de Datos. Ejercicios
Ejercicio 1: Resolución
procedimiento CrearNodo ( x , tmp )
nuevo ( tmp ) ; {O (1)}
s i tmp = n i l entonces {O (1)}
e r r o r 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)}
s i 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
Ejercicio 1: Resolución
procedimiento CrearNodo ( x , tmp )
nuevo ( tmp ) ; {O (1)}
s i tmp = n i l entonces {O (1)}
e r r o r 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)}
s i 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
Ejercicio 1: Resolución
funcion Primero ( p )
s i EsColaVacia ( p ) entonces
e r r o r Cola v a c í a
sino
devolver p ^ . Elem
f i n funcion
procedimiento Sacar ( p )
s i EsColaVacia ( p ) entonces
e r r o r Cola v a c í a ;
sino
tmp : = p ;
p : = p ^ . Sig ;
l i b e r a r ( tmp ) ;
f i n procedimiento
Algoritmos
Estructuras de Datos. Ejercicios
Ejercicio 1: Resolución
funcion Primero ( p )
s i EsColaVacia ( p ) entonces
e r r o r Cola v a c í a {O (1)}
sino
devolver p ^ . Elem {O (1)}
f i n funcion
procedimiento Sacar ( p )
s i EsColaVacia ( p ) entonces
e r r o r Cola v a c í a ;
sino
tmp : = p ;
p : = p ^ . Sig ;
l i b e r a r ( tmp ) ;
f i n procedimiento
Algoritmos
Estructuras de Datos. Ejercicios
Ejercicio 1: Resolución
funcion Primero ( p )
s i EsColaVacia ( p ) entonces {O (1)}
e r r o r Cola v a c í a {O (1)}
sino
devolver p ^ . Elem {O (1)}
f i n funcion
procedimiento Sacar ( p )
s i EsColaVacia ( p ) entonces
e r r o r Cola v a c í a ;
sino
tmp : = p ;
p : = p ^ . Sig ;
l i b e r a r ( tmp ) ;
f i n procedimiento
Algoritmos
Estructuras de Datos. Ejercicios
Ejercicio 1: Resolución
funcion Primero ( p )
s i EsColaVacia ( p ) entonces {O (1)}
e r r o r Cola v a c í a {O (1)}
sino
devolver p ^ . Elem {O (1)}
f i n funcion {O (1)}
procedimiento Sacar ( p )
s i EsColaVacia ( p ) entonces
e r r o r Cola v a c í a ;
sino
tmp : = p ;
p : = p ^ . Sig ;
l i b e r a r ( tmp ) ;
f i n procedimiento
Algoritmos
Estructuras de Datos. Ejercicios
Ejercicio 1: Resolución
funcion Primero ( p )
s i EsColaVacia ( p ) entonces {O (1)}
e r r o r Cola v a c í a {O (1)}
sino
devolver p ^ . Elem {O (1)}
f i n funcion {O (1)}
procedimiento Sacar ( p )
s i EsColaVacia ( p ) entonces
e r r o r Cola v a c í 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
Ejercicio 1: Resolución
funcion Primero ( p )
s i EsColaVacia ( p ) entonces {O (1)}
e r r o r Cola v a c í 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)}
e r r o r Cola v a c í 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
Ejercicio 1: Resolución
funcion Primero ( p )
s i EsColaVacia ( p ) entonces {O (1)}
e r r o r Cola v a c í 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)}
e r r o r Cola v a c í 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
Descargar