Multilistas

  • Uploaded by: Elena Hernandez Pereira
  • 0
  • 0
  • February 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Multilistas as PDF for free.

More details

  • Words: 1,295
  • Pages: 6
Loading documents preview...
1

Otros TADs relacionados con listas: Listas enlazadas m´ ultiples y listas multiordenadas Dadas las siguientes representaciones gr´aficas se propone como ejercicio hacer la declaraci´on de los tipos de las units implicadas:

1. Este ejemplo se trata de una multilista (lista compuesta de listas) que utilizaremos para mantener la lista de los usuarios de un sistema inform´atico, siendo sus datos su login y password encriptada. Para cada uno de ellos, adem´as, guardaremos la lista de los trabajos que tiene en ese momento en ejecuci´on. En este caso, para cada trabajo guardaremos su identificador y la carga m´axima de CPU que supone. La estructura de datos se corresponde con la mostrada en la Figura 1.

ant

lista

login1

login2

login3

pass1

pass2

pass3

sig

trabajos

id_trabajo1

ant

sig

trabajos

ant

sig

trabajos

id_trabajo2

load1

load2

sig_trabajo

sig_trabajo

id_trabajo1

id_trabajo2

load1

load2

sig_trabajo

sig_trabajo

Figura 1: Multilista de usuarios y trabajos 2. En este ejercicio manejaremos listas multiordenadas. En estas listas: a) Los elementos se encuentran ordenados por distintos criterios b) Los nodos tendr´an tantos campos de enlace como claves de ordenaci´on. c) Cada campo de enlace mantiene la lista ordenada por uno de los criterios. d ) Existe un nodo de cabecera que ser´a un registro con tantos campos como claves de ordenaci´on existan. En este caso, nos interesa mantener una lista de personas ordenadas por apellido y tambi´en por DNI, tal como se refleja en la Figura 2. El nodo de cabecera ser´ıa un registro con dos punteros, uno al principio de la lista de registros ordenados por nombres y otro a la lista de los mismos registros pero ordenados por edad.

2

nilantnom

signom

antnom

blanco

signom nil

antnom

pérez

signom

lópez

dir 1

dir 2

dir 3

32.xxx.xxx

33.xxx.xxx

30.xxx.xxx

antDNI

sigDNI

antDNI

sigDNI nil

nil antDNI

P nombre

sigDNI

DNI

Figura 2: Lista de personas ordenada por dos criterios: apellido y DNI 3. En este ejemplo manejaremos una multilista que, a su vez est´a multiordenada (ordenada por varios criterios). Se trata de un ambulatorio en el que se desea asociar asegurados con m´edicos, de manera que podamos acceder a la lista de m´edicos del seguro, a la lista de pacientes del seguro y, adem´as, a la lista de pacientes que son atendidos por un determinado m´edico. La estructura se refleja en la Figura 3. Como se puede observar, se mantienen dos listas doblemente enlazadas: una para los asegurados y otra para los m´edicos. Para facilitar la b´ usqueda de m´edicos y pacientes ambas listas est´an ordenadas: la lista de m´edicos est´a ordenada alfab´eticamente por apellido y la de pacientes por DNI. Adem´as, para poder saber qu´e pacientes atiende qu´e m´edico, cada nodo m´edico tiene un puntero al nodo del primer asegurado asociado, y cada nodo de asegurado tiene un enlace al siguiente asegurado al que le atiende el mismo m´edico. Lista_médicos nilantmed

sigmed

antmed

sigmed

antmed

sigmednil

A

B

C

dir 1

dir 2

dir 3

27

31

25

paciente

paciente

paciente

Lista_asegurados nilantaseg

sigaseg

antaseg

sigaseg

antaseg

sigasegnil

X

Z

Y

dir 1

dir 2

dir 3

27

31

paciente

paciente

25 nil

paciente

nil

Figura 3: En esta figura el m´edico A atiende a los pacientes X e Y, el m´edico B atiende al pacientes Z, y el m´edico C no tiene ning´ un paciente.

3

Soluciones 0.1.

Ejercicio 1: lista de usuarios y sus trabajos

La definici´on de tipos ser´ıa la siguiente. En primer lugar, crear´ıamos el TAD necesario para mantener la lista de trabajos: Unit L i s t a T r a b a j o s ; interface const nul o=n i l ; type tId = integer ; tLoad = r e a l ; tPosTrabajo = ˆ tNodoTrabajo ; tInfoTrabajo = record id : tId ; l o a d : tLoad ; end ; tNodoTrabajo = r e c o r d Info : tInfoTrabajo ; s i g : tPosTrabajo ; end ; t L i s t a T r a b a j o s = tPosTrabajo ; { operaciones } p r o c e d u r e L i s t a T r a b a j o s V a c i a ( var L : t L i s t a T r a b a j o s ) ; ... implementation ... end .

4 Unit L i s t a U s u a r i o s ; uses ListaTrabajos ; interface const nul o=n i l ; type tLogin = s t r i n g [ 1 0 ] ; tPass = s t r i n g [ 1 0 ] ; tInfoUsuario = record l o g i n : tLogin ; pass : tPass ; end ; t P o s U s u a r i o = ˆ tNodoUsuario ; tNodoUsuario = r e c o r d Info : tinfousuario ; ant , s i g : t P o s U s u a r i o ; trabajos : tListaTrabajos ; end ; t L i s t a U s u a r i o s = tPosUsuario ; { operaciones } p r o c e d u r e L i s t a T r a b a j o s V a c i a ( var L : t L i s t a T r a b a j o s ) ; ... implementation ... end .

0.2.

Ejercicio 2: Lista Multiordenada

Unit L i s t a M u l t i o r d e n a d a ; interface const nul o=n i l ; type tNombre : s t r i n g [ 2 5 ] ; tDir : s t r i n g [ 4 0 ] ; tDNI : i n t e g e r ; ti n fo = record Nombre : tNombre ; d i r e c c i o n : tDir ; DNI : tDNI ; end ; tPos = ˆtNodo ; tNodo = record Info : tinfo ; antnombre , signombre : tPos ; antDNI , sigDNI : tPos ;

5 end ; tLista = record nombre : tPos ; DNI : tPos ; end ; ... implementation ...

0.3.

Ejercicio 3: informaci´ on del ambulatorio.

Este ejemplo est´a tomado del Joyanes. En el libro aparecen tanto las dos unit desarrolladas como las funciones para hacer consultas a las listas y dar altas. La definici´on de tipos ser´ıa: unit ListaAsegurados ; interface interface const nulo=n i l ; type tNombre : s t r i n g [ 2 5 ] ; tDir : s t r i n g [ 4 0 ] ; tDNI : i n t e g e r ; tinfoAsegurado = record Nombre : tNombre ; d i r e c c i o n : tDir ; DNI : tDNI ; end ; tPosAsegurado = ˆ tNodoAsegurado ; tNodoAsegurado = r e c o r d info : tinfoAsegurado ; antAsegurado , s i g A s e g u r a d o : tPosAsegurado ; s i g P a c i e n t e : tPosAsegurado ; end ; t L i s t a A s e g u r a d o s = tPosAsegurado ; ... end .

6 unit ListaMedicos ; interface uses ListaAsegurados ; type tinfoMedico = tinfoAsegurado ; tPosMedico = ˆ tNodoMedico ; tNodoMedico = r e c o r d info : tinfoMedico ; antMedico , s i g M e d i c o : tPosMedico ; pacientes : tListaAsegurados ; end ; ... end .

Related Documents


More Documents from "Christian Zambrano"

Multilistas
February 2021 0
January 2021 0
Premio S
January 2021 2
Ielts Practice Tests Plus 3
February 2021 2
Informe Ii
January 2021 0