Dpto. Lenguajes y Ciencias de la Computación Ingeniería Técnica en Informática Práctica 9. TAD montículo Objetivos. Se trata de construir el TAD Montículo con una implementación acotada. Además, como aplicación de este TAD se ordenará en orden creciente un conjunto de números. Enunciado. Construir el TAD MONTICULO según el siguiente módulo de definición: DEFINITION MODULE Monticulo; FROM TadItem IMPORT ITEM; TYPE MONTICULO; TIPO_ERROR = <<a definir>>; PROCEDURE Error(): ERROR; PROCEDURE Crear():MONTICULO; PROCEDURE EsVacio(m: MONTICULO): BOOLEAN; (* pre: NOT EsVacio(m) *) PROCEDURE Elemento( m: MONTICULO): ITEM; PROCEDURE Insertar (VAR m: MONTICULO; x: ITEM); (* pre: NOT EsVacio(m) *) PROCEDURE Eliminar (VAR m: MONTICULO); PROCEDURE Copiar(VAR m1: MONTICULO; m2: MONTICULO); PROCEDURE Destruir(VAR m: MONTICULO) END Monticulo. El TAD MONTICULO se representará mediante la siguiente estructura de datos: CONST MAXMONTICULO= <<a definir>>; TYPE MONTICULO = POINTER TO BLOQUE; BLOQUE = RECORD ultimo: [0..MAXMONTICULO]; elemen: ARRAY [1..MAXMONTICULO] OF ITEM; END; En la raíz del montículo se encuentra el menor elemento. Para implementar el TAD MONTICULO de forma genérica, el módulo TadItem debe exportar una operación que nos permita comparar dos datos de tipo ITEM. Así, además del procedimiento ValorPorDefecto, incluiremos en el módulo de definición de TadItem el procedimiento PROCEDURE Comparar(a, b: ITEM): INTEGER; que devuelve -1 si a es menor que b, 0 si a es igual a b, y 1 si a es mayor que b. Laboratorio de Programación III. 2.000/2.001 40 Dpto. Lenguajes y Ciencias de la Computación Ingeniería Técnica en Informática Práctica Suplementaria Construir el TAD MONTICULO con una implementación no acotada según el módulo de definición de la página anterior y empleando la siguiente estructura de datos: TYPE PNODO= POINTER TO NODO; MONTICULO= POINTER TO CABECERA; CABECERA= RECORD raiz: PNODO; ultimo: PNODO; END; NODO = RECORD cont: ITEM; padre, hijo_izqdo, hijo_dcho: PNODO; END; Laboratorio de Programación III. 2.000/2.001 41