Listas
📖 Teoría
Una lista es un conjunto de datos homogéneos (de un mismo tipo) que se almacenan en un orden determinado. Una lista puede contener 0 o más elementos
Epecificación Algebráica de las listas
Parámetros genéricos
TElemento
Tipos
TLista
OperacionesConstructoras generadoras
CrearVacia:→TLista
Construir: TElemento X TLista→TListaObservadoras selectoras
- (PARCIAL)
Primero: TLista→TElemento
- (PARCIAL)
Resto: TLista→TListaObservadoras no selectoras
EsVacia: TLista→Boolean
Longitud: TLista→Integer
- (PARCIAL)
Ultimo: TLista→TElemento
Pertenece: TElemento X TLista→BooleanConstructoras no generadoras
Concatenar: TLista X TLista→TLista
BorrarElemento: TElemento X TLista→TLista
InsertarFinal: TElemento X TLista→TListaParámetros genéricosIgual: TElemento X TElemento→Boolean
Variables
l,lista,lista<N>→TLista
e,elem,elemento→TElemento
Ecuaciones de definitud
- DEF (
Primero( Construir(e, l) ))
- DEF (
Resto( Construir(e, l) ))
- DEF (
Ultimo( Construir(e, l) ))
EcuacionesObservadoras selectoras
Primero( Construir( e, l ) )=e
Resto( Construir( e, l ) )=lObserbadoras no selectoras
EsVacia
EsVacia( CrearVacia )=True
EsVacia( Construir( e, l) )=False
Longitud
Longitud( CrearVacia )=0
Longitud( Construir( e, l ) )=1 + Longitud(l)
Ultimo
Ultimo( Construir( e, l ) )= SIEsVacia( l )→ (e) || (Ultimo( l ))
Pertenece
Pertenece( e, CrearVacia )=False
Pertenece( e, Construir( elem, l ) )=Igual( e, elem )||Pertenece( e, l )Constructoras no generadoras
Concatenar
Concatenar( CrearVacia, l )=l
Concatenar( Construir( e, l ), lista2 )=Construir( e, Concatenar( l, lista2 ) )
BorrarElemento
BorrarElemento( e, CrearVacia )=CrearVacia
BorrarElemento( e, Construir( elem, l ) )= SIIgual( e, elem )→ (l) || (Construir( e, BorrarElemento(e, l) ))
InsertarFinal
InsertarFinal( e, CrearVacia )=Construir( e, CrearVacia )
InsertarFinal( e, Construir(elem, l) )=Construir( e, InsertarFinal(e, l) )
Epecificación Algebráica de las listas ordenadas
Tipos
TListaOrd
OperacionesInsertarOrd: TElemento X TListaOrd→TListaOrdMezclar: TListaOrd X TListaOrd→TListaOrdParámetros genéricosEsMejor: TElemento X TElemento→Boolean
Variableslo,lo<N>→TListaOrd
Ecuaciones
InsertarOrd
InsertarOrd( e, CrearVacia )=Construir( e, CrearVacia )
InsertarOrd( e1, Construir(e2, lo) )= SIEsMejor(e1, e2)→ (Construir(e1, Construir(e2, lo))) || (Construir(e2, InsertarOrd(e1, lo)))
