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
Operaciones
Constructoras generadoras
  • CrearVacia:TLista
  • Construir: TElemento X TListaTLista
Observadoras selectoras
  • (PARCIAL) Primero: TListaTElemento
  • (PARCIAL) Resto: TListaTLista
Observadoras no selectoras
  • EsVacia: TListaBoolean
  • Longitud: TListaInteger
  • (PARCIAL) Ultimo: TListaTElemento
  • Pertenece: TElemento X TListaBoolean
Constructoras no generadoras
  • Concatenar: TLista X TListaTLista
  • BorrarElemento: TElemento X TListaTLista
  • InsertarFinal: TElemento X TListaTLista
Parámetros genéricos
Igual: TElemento X TElementoBoolean
Variables
  • l , lista , lista<N>TLista
  • e , elem , elementoTElemento
Ecuaciones de definitud
  • DEF ( Primero( Construir(e, l) ) )
  • DEF ( Resto( Construir(e, l) ) )
  • DEF ( Ultimo( Construir(e, l) ) )
Ecuaciones
Observadoras selectoras
  • Primero( Construir( e, l ) ) = e
  • Resto( Construir( e, l ) ) = l
Obserbadoras 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 ) ) = SI EsVacia( 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 ) ) = SI Igual( 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
Operaciones
InsertarOrd: TElemento X TListaOrdTListaOrd
Mezclar: TListaOrd X TListaOrdTListaOrd
Parámetros genéricos
EsMejor: TElemento X TElementoBoolean
Variables
lo , lo<N>TListaOrd
Ecuaciones
  • InsertarOrd
    • InsertarOrd( e, CrearVacia ) = Construir( e, CrearVacia )
    • InsertarOrd( e1, Construir(e2, lo) ) = SI EsMejor(e1, e2) → ( Construir(e1, Construir(e2, lo)) ) || ( Construir(e2, InsertarOrd(e1, lo)) )

⚙️ Implementaciones