Secuencia Lista Elem Lista

Anuncio
CI2126 PRÁCTICA 6
Implementación de un TAD de manera dinámica.
Se define el siguiente TAD y sus operaciones:
Secuencia_t:
Es una colección de elementos <e0, e1, e2, e3, ..., en-1>, con n>=0 y existe un elemento ei, llamado
ventana, que es la posición visible de la Secuencia.
Operaciones:
Secuencia_Construir: void ­­> Secuencia_t
/* Devuelve una secuencia vacía sin términos. La ventana queda indefinida */
Secuencia_Destruir: Secuencia_t ­> void
/* Libera el espacio de memoria ocupado por la secuencia y sus términos */
Secuencia_Clonar: Secuencia_t ­> Secuencia_t
/* Crea un duplicado elemento a elemento de toda la secuencia */
Secuencia_Insertar: Secuencia_t × Elem_t ­­> Secuencia_t
̣
/* Devuelve una secuencia con el elemento insertado en la posición siguiente a
la ventana, y la ventana se mueve a este nuevo elemento */
Secuencia_Eliminar: Secuencia_t ­­> Secuencia_t
̣
/* Elimina el elemento actual de la ventana */
Secuencia_Comienzo: Secuencia_t ­­> void
/* Regresa la ventana al primer elemento de la secuencia*/
Secuencia_AvanzarSiguiente: Secuencia_t ­­> void
/* Avanza la ventana al elemento siguiente de la secuencia*/
Secuencia_Info: Secuencia_t ­­> Elem_t
/* Devuelve la información del elemento visible en la ventana*/
Secuencia_Vacia: Secuencia_t ­­> bool
/* Devuelve true si la secuencia está vacía */
Secuencia_AlFinal: Secuencia_t ­­> bool
/* Devuelve true si la ventana es el último elemento de la secuencia */
Elem
Secuencia
primero
info
siguiente
Lista
info
siguiente
info
siguiente
Lista
ventana
Para implementar este TAD se sugiere usar la siguiente estructura, cuyos elementos a su vez están
implementados como listas (Lista_t) de enteros (Elem_t ≡ int).
Se le está ofreciendo un código de ayuda, separado por módulos en los TADs, es decir, un xxx.h y un
xxx.c par acada TAD definido. Se suministran entonces (algunos incompletos, para que Ud. los use) :
elem.h, elem.c, lista.h, lista.c, y secuencia.h, junto con un programa de prueba (prueba.c) sugerido.
Preguntas:
1. Usando las primitivas del TAD Secuencia_t implemente las siguientes operaciones no primitivas:
a) Secuencia_Ultimo: Secuencia_t ­­> void
/* Mueve la ventana al último elemento de la secuencia */
b) Secuencia_Tamanyo: Secuencia_t ­­> int
/* Devuelve el tamaño de la lista */
c) Secuencia_InsertarEnPos: Secuencia_t × int ­­> Secuencia_t
/* Inserta un elemento en la posición dada */
d) Secuencia_Imprimir: Lista ­­> void
/* Imprime el contenido de una lista */
e) Secuencia_Concatenar: Secuencia_t × Secuencia_t ­­> Secuencia_t
/*Devuelve una secuencia con la concatenación de las dos secuencias dadas */
f) Secuencia_EliminarTodos: Secuencia_t × Elem_t ­­> Secuencia_t
/* Elimina todas las ocurrencias del elemento en la secuencia*/
g) Secuencia_Ordenada: Secuencia_t ­­> bool
/* Dice si una secuencia está ordenada. Suponga que existe una función Elem_esMenor que dice
si un elemento es menor que otro.*/
Descargar