El TAD Montículo - Departamento de Lenguajes y Ciencias de la

Anuncio
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
Descargar