unidad curricular: algoritmica y programaciÓn...

21
Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación. UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN UNIDAD XIV. INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS DINÁMICAS AVANZADAS: PILAS, COLAS Y ÁRBOLES CONTENIDO: Pilas Colas Árboles Ejercicios Resueltos Referencias Bibliográficas

Upload: others

Post on 12-Sep-2020

10 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN

UNIDAD XIV. INTRODUCCIÓN A LAS ESTRUCTURAS DE

DATOS DINÁMICAS AVANZADAS:

PILAS, COLAS Y ÁRBOLES

CONTENIDO:

Pilas

Colas

Árboles

Ejercicios Resueltos

Referencias Bibliográficas

Page 2: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

UNIDAD XIV

INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS DINÁMICAS

AVANZADAS: PILAS, COLAS Y ÁRBOLES

PILAS

Una pila (stack en inglés) es una estructura de datos en la que el modo

de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último

en entrar, primero en salir) que permite almacenar y recuperar datos, es decir,

la inserción y extracción de elementos de la pila siguen el principio LIFO ya que

el último elemento que se agrega a la pila es el primero en salir de la misma.

Tanto la inserción como la eliminación de los elementos de una pila se realiza

solo por un extremo que se denomina tope, es decir, que el último elemento en

entrar, es el único accesible en cada momento.

Representación Gráfica de una Pila

.

En el gráfico se observa que el ultimo elemento que se insertó en la pila

(elemento n) está ubicado en el tope de la misma, si se desea sacar un

elemento, saldría este mismo.

elemento 1

elemento 2

: : .

elemento n

Page 3: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Operaciones Básicas de una pila

Insertar en la pila (apilar o push): agrega un elemento a la pila, este

nuevo elemento de la pila estará en el tope de la misma.

Retirar de la pila (desapilar, pop): retira o elimina el último elemento

de la pila, es decir, elimina el elemento que está en el tope.

Ejemplo:

Por analogía con objetos cotidianos, una operación apilar equivaldría

a colocar un plato sobre una pila de platos, y una operación desapilar a

quitar el plato que está encima.

Aplicaciones de las Pilas

Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia:

• Gestión de ventanas en Windows o Linux (cuando cerramos una

ventana siempre recuperamos la que teníamos detrás).

• Evaluación general de cualquier expresión matemática para evitar tener

que calcular el número de variables temporales que hacen falta.

Page 4: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

• Navegador Web

– Se almacenan los sitios previamente visitados

– Cuando el usuario quiere regresar (presiona el botón de retroceso

o regresar), simplemente se extrae la última dirección (pop) de la

pila de sitios visitados.

• Editores de texto u otras herramientas

– Los cambios efectuados se almacenan en una pila

– El Usuario puede deshacer los cambios mediante la operación

“undo” o deshacer, la cual extrae el estado del texto o cualquier

elemento, antes del último cambio realizado.

COLAS

Una cola es una estructura de datos en la que el modo de acceso a sus

elementos es de tipo FIFO (del inglés First Input First Output, primero en entrar,

primero en salir). Permite almacenar y recuperar datos, es decir, la inserción y

extracción de elementos de la cola siguiendo el principio FIFO. Cuando se

agrega un elemento a la cola, éste se agrega al final. Cuando se elimina un

elemento de la cola, se elimina el que está al frente de la cola, es decir, el

primero.

Representación Gráfica

Frente

Final

Elemento 1

Elemento 2

Elemento 3

……....................

Elemento n-1

Elemento n

Operaciones Básicas

Insertar en la cola (encolar): agrega un elemento a la cola, este nuevo

elemento de la cola estará en el extremo final de la misma.

Retirar de la cola (desencolar): retira o elimina el primer elemento de

la cola, es decir, elimina el elemento que está en el frente.

Page 5: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Ejemplo de una cola:

Frente

Final

26

20

17

……....................

14

18

Si insertamos el elemento 15 a la cola, éste sería el elemento final y

quedaría de la siguiente manera:

26

20

17

……....................

14

18

15

Si eliminamos un elemento de la cola, se eliminaría el primer

elemento (frente) que corresponde al 26, por lo tanto ahora el frente

sería el elemento 20:

20

17

……....................

14

18

15

Aplicaciones de las Colas

Las colas se utilizan en muchas aplicaciones que utilizamos con frecuencia.

Impresión de documentos: Cuando imprimimos varios documentos,

éstos se imprimen en el orden en que lo mandamos a imprimir.

Los números de tickets para atender público.

La simulación de cualquier cola de elementos.

Page 6: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Un ejemplo práctico de la vida cotidiana de colas, son las colas que realizamos

en los bancos o en cualquier lugar. La cola para subir al autobús está

compuesta de elementos (personas), que dispone de dos extremos comienzo y

fin. Por el comienzo se extraerá un elemento cuando haya comprado el billete

para su viaje, y si llega una nueva persona con intención de usar el autobús,

tendrá que colocarse al final y esperar que todos los elementos situados antes

que él abandonen la cola.

ARBOLES

Un árbol es una estructura de datos que consta de un conjunto finito de

elementos, denominados nodos y un conjunto finito de líneas dirigidas

denominadas ramas que conectan los nodos.

Representación gráfica

Page 7: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Como se puede observar, los círculos representan los nodos y dentro de

ellos se encuentra la información o datos que guardan. Las líneas representan

las ramas que unen los nodos.

Estructura de un árbol

Si un árbol no está vacío, pueden distinguirse varias partes: la raíz, nodos

hijos, nodos padres, nodos hojas, ramas.

Raíz: es el primer nodo del árbol.

Nodos hijos: son los sucesores de otros nodos.

Nodos padre: son nodos que tienen nodos sucesores.

Nodos hojas: son los nodos terminales, es decir, los que no tienen nodos

hijos.

Ramas: corresponde a un conjunto de nodos conectados.

A continuación se presenta un ejemplo donde se distinguen estas partes:

Terminologías sobre árboles

Además de cada elemento que conforma un árbol, existen otros términos

utilizados en la descripción de sus atributos.

Page 8: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Nivel: el nivel de un nodo es su distancia hasta la raíz . Por ejemplo, la raíz

tiene nivel 0, los hijos de la raíz están en el nivel 1, y los hijos de éstos están en

el nivel 2, y así sucesivamente. Tomando en cuenta el ejemplo anterior, se

puede decir que el nodo A tiene nivel 0, los nodos B,C,D están en el nivel 1 y

los nodos E,F,G,H,I están en el nivel 2.

Nodos hermanos: son nodos que están en el mismo nivel. En el ejemplo

anterior los nodos hermanos son: B,C,D y E,F,G,H,I.

Camino: Es una secuencia de nodos, en los que cada nodo es adyacente al

siguiente. Para llegar a cada nodo del árbol se sigue un único camino que

comienza en el raíz. Siguiendo el ejemplo anterior los caminos posibles son:

a) A

b) A,B

c) A,B,E

d) A,B,F

e) A,C

f) A,C,G

g) A,D

h) A,D,H

i) A,D,I

Altura o profundidad: es el nivel de la hoja del camino mas largo desde la raíz

mas uno. La altura de un árbol vacío es 0. En el ejemplo anterior el árbol

contiene tres niveles: 0,1 y 2; y su altura es 3.

Page 9: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

ARBOL BINARIO

Un árbol binario es un árbol en el que sus nodos tienen un máximo de dos

hijos.

Ejemplo:

Page 10: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Los árboles binarios tiene varias utilidades tales como, evaluación de

expresiones, operaciones de búsqueda y ordenamiento. Para estas dos

últimas actividades se utiliza un árbol denominado árbol binario de búsqueda.

Arbol binario de búsqueda: es aquel que dado un nodo, todos los elementos

del lado izquierdo del nodo son menores que los datos de dicho nodo, y todos

los elementos del lado derecho del nodo son mayores que los datos de dicho

nodo.

Ejemplo:

Construcción de un árbol binario de búsqueda

El primer nodo representa el nodo raíz. Si el nodo siguiente es menor que la

raíz, debe ubicarse a la izquierda de ésta, de lo contrario se ubica a la derecha.

Para insertar el tercer nodo, se realiza la misma comparación, comenzando

desde el nodo raíz. Si el nodo es menor que el nodo raíz se sigue comparando

con los elementos que están a la izquierda de éste, de lo contrario se compara

Page 11: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

con los nodos de la derecha. Cabe recordar que cada nodo puede tener

máximo solo dos hijos ya que es un árbol binario.

Ejemplo:

Supongamos que se desea construir un árbol con los siguientes valores:

54,35,20,80,40,66,78,97,38,55,50.

Se comienza por el nodo raíz, que en este caso es 54.

El siguiente elemento es 35, como es menor que 54 se coloca del lado

izquierdo de la raíz.

A continuación, se ha de insertar el 20 que es menor que 54 y 35, por

consiguiente irá a la izquierda y debajo de 35

El siguiente elemento corresponde al 80. Ya que es mayor que 54, se debe

ubicar del lado derecho de la raíz.

Page 12: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Sigue el número 40, menor que 54 pero mayor a 35, por lo tanto, debe ir a la

derecha de 35.

El siguiente número es 66, lo que implica que va del lado izquierdo de 66, ya

que es mayor a 54 y menor a 80.

El número 78 es mayor a 54, menor a 80 y mayor a 66, por consiguiente su

ubicación corresponde al lado derecho de 66.

Page 13: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Con respecto al 97, dado que es mayor que 54 y 80, debe ir del lado derecho

del 80.

Siguiendo el mismo criterio se insertan los elementos restantes: 38,55 y 50,

quedando de la siguiente manera:

Page 14: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Page 15: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Recorridos de un árbol

Para acceder a un elemento almacenado en un árbol, se necesita

recorrer el árbol o visitar los nodos del mismo sólo una vez. Existen varios

métodos de recorrido de árbol:

Recorrido preorden

Recorrido en orden (inorden)

Recorrido postorden

Recorrido preorden: consiste en recorrer el árbol en el siguiente orden: raíz,

subárbol izquierdo, subárbol derecho.

Ejemplo: Dado el siguiente árbol, hagamos el recorrido preorden

Page 16: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Siguiendo el orden preorden (raíz, subárbol izquierdo, subárbol derecho), se

visita primero el nodo 54, el nodo 35, luego 20 y por último 40. A continuación

se visita la parte derecha de la raíz, por lo tanto se visita primero 80, luego 66

y finalmente 97. En consecuencia, el recorrido preorden del árbol es:

54,35,20,40,80,66,97.

Recorrido en orden: consiste en visitar el árbol en el siguiente orden:

subárbol izquierdo, raíz, subárbol derecho.

Ejemplo: Tomando en cuenta el árbol anterior:

Page 17: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

Para realizar el recorrido en orden (izquierda, raíz, derecha), se comienza por

el nodo 20, a continuación el 35 y después el 40. Después corresponde visitar

el nodo raíz 54 ya que todo el subárbol izquierdo ya está recorrido. Del lado

derecho se comienza por el nodo 66, luego el 80 y finalmente el 97. De esta

manera, el recorrido en orden es: 20,35,40,54, 66,80,97.

Recorrido postorden: consiste en procesar el árbol en el siguiente orden:

subárbol izquierdo, subárbol derecho, raíz.

Ejemplo: Siguiendo con el mismo árbol:

Para el orden postorden (izquierda, derecha, raíz), corresponde visitar en

primer lugar el 20, luego el 40 y después el 35. A continuación se visita el

subárbol derecho, comenzando por el 66 luego el 97 y después el 80.

Finalmente se procesa el nodo raíz 54. Por consiguiente el recorrido postorden

es: 20,40,35,66,97,80,54.

Page 18: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

EJERCICIOS RESUELTOS

A continuación se presenta un miniproyecto desarrollado en C++ que

contiene las operaciones básicas de una pila utilizando un arreglo.

El programa tiene las siguientes opciones:

1.- Incluir un elemento a la pila 2.- Mostrar los elementos de la pila 3.- Eliminar un elemento de la pila #include <iostream> using namespace std; #define N 10 int pila[N],tope; int opcion,i; int menu() { cout <<"MENU DE PILAS" <<endl; cout << "1.- Incluir un elemento a la pila"<<endl; cout <<"2.- Mostrar los elementos de la pila"<<endl; cout <<"3.- Eliminar un elemento de la pila"<<endl; cout <<"4.- Salir"<<endl; cout <<"Ingrese la opcion (1/2/3/4): "<<endl; cin >>opcion; return opcion; } void incluir_elemento_en_la_pila() { if (tope==N-1) {cout<<"la pila está llena"<<endl; } else {tope++; cout <<"Ingrese el valor a incluir en la pila "<<endl; cin >> pila[tope]; } } void mostrar_pila() { for (i=0;i<=tope;i++) { cout <<" El valor de la posicion " <<i <<" es: " <<endl; cout <<pila[i]; } } void eliminar_elemento_de_la_pila() {if (tope==-1) {cout <<"la pila está vacía"<<endl;}

Page 19: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

else {cout <<"El elemento a eliminar de la pila es: "<<pila[tope]; tope--; } } main() { opcion=0; tope=-1; while (opcion!=4) { opcion= menu(); switch (opcion) { case 1: incluir_elemento_en_la_pila(); break; case 2: mostrar_pila(); break; case 3: eliminar_elemento_de_la_pila(); break; } } }

A continuación se presenta un miniproyecto desarrollado en C++ que

contiene las operaciones básicas de una cola utilizando un arreglo.

El programa tiene las siguientes opciones:

1.- Incluir un elemento a la cola 2.- Mostrar los elementos de la cola 3.- Eliminar un elemento de la cola #include <iostream> using namespace std; #define N 10 int cola[N],final; int opcion,i; int menu() { cout <<"MENU DE COLAS" <<endl; cout << "1.- Incluir un elemento a la cola"<<endl; cout <<"2.- Mostrar los elementos de la cola"<<endl; cout <<"3.- Eliminar un elemento de la cola"<<endl; cout <<"4.- Salir"<<endl; cout <<"Ingrese la opcion (1/2/3/4): "<<endl; cin >>opcion; return opcion; } void incluir_elemento_en_la_cola()

Page 20: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

{ if (final==N-1) {cout<<"la cola está llena"<<endl; } else {final++; cout <<"Ingrese el valor a incluir en la cola "<<endl; cin >> cola[final]; } } void mostrar_cola() { for (i=0;i<=final;i++) { cout <<" El valor de la cola en la posicion " <<i <<" es: " <<endl; cout <<cola[i]; } } void eliminar_elemento_de_la_cola() {if (final==-1) {cout <<"la cola está vacía"<<endl;} else {cout <<"El elemento a eliminar de la cola es: "<<cola[0]; for(i=0;i<final;i++) {cola[i]=cola[i+1]; } final--; } } main() { opcion=0; final=-1; while (opcion!=4) { opcion= menu(); switch (opcion) { case 1: incluir_elemento_en_la_cola(); break; case 2: mostrar_cola(); break; case 3: eliminar_elemento_de_la_cola(); break; } } }

Page 21: UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACIÓN …algoritmica.webcindario.com/unidades/unidad14.pdf · 2015. 2. 18. · de la pila, es decir, elimina el elemento que está en el tope

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

Elaborado por: Ing. Katiusca Briceño de Rojo. PNF Informática. Algorítmica y Programación.

REFERENCIAS BIBLIOGRÁFICAS

Bassard, G y Bratley, P. (2010). Fundamentos de algoritmia. Prentice-Hall.

Joyanes, L. (2008). Fundamentos de programación. Algoritmos , Estructuras de datos y objetos. Mc Graw Hill. Tercera edición.

Joyanes, L. y Zahonero, I. (2005). Programación en C. Metodología, algoritmos y Estructura de datos. Mc Graw Hill. Segunda Edición

Martí, N. y Ortega, Y. (2004). Estructuras de datos y Métodos Algorítmicos. Ejercicios Resueltos. Pearson Education.