09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

19.5. Ejercicios 447<br />

19.5 Ejercicios<br />

1. Construya una unidad de Turbo <strong>Pascal</strong> para los sigui<strong>en</strong>tes tipos abstractos de<br />

datos. El tipo abstracto debe incluir operaciones de construcción, modificación y<br />

consulta, así como operaciones propias del tipo si se considera conv<strong>en</strong>i<strong>en</strong>te:<br />

(a) Listas (de <strong>en</strong>teros). Consúltese el apartado 17.1.<br />

(b) Listas ord<strong>en</strong>adas (de <strong>en</strong>teros). Consúltese el apartado 17.1.<br />

(c) Pilas (de <strong>en</strong>teros). Consúltese el apartado 17.2.<br />

(d) Colas (de <strong>en</strong>teros). Consúltese el apartado 17.3.<br />

(e)<br />

(f)<br />

Árboles binarios (de <strong>en</strong>teros). Consúltese el apartado 17.4.<br />

Árboles binarios de búsqueda, cont<strong>en</strong>i<strong>en</strong>do <strong>en</strong> sus nodos cad<strong>en</strong>as de caracteres.<br />

Consúltese el apartado 17.4.2.<br />

2. Desarrolle una implem<strong>en</strong>tación alternativa para el tipo abstracto tConj, basando<br />

la repres<strong>en</strong>tación <strong>en</strong>:<br />

(a) Un vector de booleanos. Obviam<strong>en</strong>te, <strong>en</strong> este caso se deb<strong>en</strong> limitar los<br />

elem<strong>en</strong>tos posibles (supóngase por ejemplo, que los elem<strong>en</strong>tos están compr<strong>en</strong>didos<br />

<strong>en</strong>tre 1 y 1000, ambos inclusive).<br />

(b)<br />

Árboles binarios de búsqueda (véanse los apartados 19.2.3 y 17.4.2).<br />

Compare el comportami<strong>en</strong>to que ti<strong>en</strong><strong>en</strong> las operaciones <strong>en</strong> ambos tipos abstractos<br />

de datos.<br />

3. Implem<strong>en</strong>te las operaciones Union, Interseccion y Difer<strong>en</strong>cia (que calculan,<br />

obviam<strong>en</strong>te, la unión, intersección y difer<strong>en</strong>cia de dos conjuntos) como operaciones<br />

propias del tipo abstracto de datos tConj, repres<strong>en</strong>tado mediante árboles binarios<br />

de búsqueda.<br />

4. Programe un algoritmo que ord<strong>en</strong>e una secu<strong>en</strong>cia utilizando dos pilas. Para ello<br />

debe mover elem<strong>en</strong>tos de una pila a otra asegurándose de que los items m<strong>en</strong>ores<br />

llegan a la cima de una de las pilas y los mayores a la cima de la otra. Utilice el<br />

tipo abstracto pila desarrollado <strong>en</strong> el ejercicio 1c.<br />

5. Escriba una función para sumar dos polinomios utilizando alguno de los tipos<br />

abstractos de datos propuestos <strong>en</strong> el ejercicio 1.<br />

6. Escriba una unidad para la aritmética <strong>en</strong>tera (sin límite <strong>en</strong> sus valores máximo<br />

y mínimo), utilizando alguno de los tipos abstractos de datos propuestos <strong>en</strong> el<br />

ejercicio 1.<br />

7. Una cola doble es una estructura de datos consist<strong>en</strong>te <strong>en</strong> una lista de elem<strong>en</strong>tos<br />

sobre la cual son posibles las sigui<strong>en</strong>tes operaciones:<br />

• Meter(x,d): inserta el elem<strong>en</strong>to x <strong>en</strong> el extremo frontal de la cola doble d.<br />

• Sacar(x,d): elimina y devuelve el elem<strong>en</strong>to que está al fr<strong>en</strong>te de la cola doble<br />

d.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!