Download - ED 02 0_tda_definicion_td_as-bnf
1
Definición de TDAs usando BNF
Estructura de Datos – FIEC03012
2
Tabla de Contenidos TDA Arreglo Unidimensional ....................................................... 3
Definición ........................................................................................................... 3 Operaciones........................................................................................................ 3
Básicas........................................................................................................... 3 Extendidas...................................................................................................... 3
TDA Lista Simple (LSE) ............................................................ 4 Definición ........................................................................................................... 4 Operaciones........................................................................................................ 4
TDA Lista Simple Ordenada (LSO) ................................................. 5 Definición ........................................................................................................... 5 Operaciones........................................................................................................ 5
TDA Lista Doblemente Enlazada (LDE) ............................................ 6 Definición ........................................................................................................... 6 Operaciones........................................................................................................ 6
TDA Pila ........................................................................... 7 Definición ........................................................................................................... 7 Operaciones........................................................................................................ 7
TDA Cola .......................................................................... 8 Definición ........................................................................................................... 8 Operaciones........................................................................................................ 8
TDA Árbol.......................................................................... 9 Definición ........................................................................................................... 9 Operaciones........................................................................................................ 9
TDA Árbol Binario (AB)........................................................... 10 Definición ......................................................................................................... 10 Operaciones...................................................................................................... 10
TDA Árbol Binario Búsqueda (ABB)............................................... 11 Definición ......................................................................................................... 11 Operaciones...................................................................................................... 11
TDA Árbol Adelson, Velkii & Landis (AVL) ........................................ 12 Definición ......................................................................................................... 12 Operaciones...................................................................................................... 12
TDA Árbol B (AB) ................................................................ 13 Definición ......................................................................................................... 13 Operaciones...................................................................................................... 13
TDA Grafo ....................................................................... 14 Definición ......................................................................................................... 14 Operaciones...................................................................................................... 14
3
TDA Arreglo Unidimensional
Definición <arreglo> ::= {<elemento>0, ... , <elemento><iterador>, ... <elemento><<NUM_ELEM>>-1} <iterador> ::= (0,...,<<NUM_ELEM>>-1) <elemento>::= <<dato>>|<<dato>>{<<dato>>}
Operaciones
Básicas Constructor y Destructor
A1D_Crear (nombreArreglo, rangoIndice, tipoBase) A1D_Eliminar(nombreArreglo)
Selector A1D_AccederElemento (nombreArreglo, indiceSelección) El selector puede usarse para:
o extraer un valor del arreglo o modificar el valor de una celda del arreglo
Extendidas Dependen del tipoBase, por ejemplo:
A1D_Ordenar(nombreArreglo, tipoOrdenamiento) A1D_BuscarElemento(nombreArreglo, elemento): indiceSelección
4
TDA Lista Simple (LSE)
Definición <listaSimple> ::= <comienzo> + {<nodo>} <nodo> ::= <contenido> + <enlace> <contenido> ::= <<dato>>{<<dato>>} <enlace> ::= (<<referencia_nodo>> | NULL) <comienzo> :: =<enlace>
Operaciones Creación/Destrucción
LSE_Crear(nombreLista) LSE_Eliminar(nombreLista)
Comprobación de Estado
LSE_EstaVacia(nombreLista) : Booleano LSE_EstaVacia(referenciaNodo) : Booleano LSE_EstaLlena(nombreLista) : Booleano
Inserción de Nodos LSE_InsertarNodo(nombreLista, nodo, posicion) LSE_InsertarNodo(nombreLista, nodo)
Borrado de Nodos LSE_BorrarNodo(nombreLista, nodo)
Búsqueda de un nodo LSE_BuscarNodo(nombreLista, dato) : contenido LSE_BuscarNodo(nombreLista, dato) : referenciaNodo LSE_EsNodoDeLista(nombreLista,nodo) : Booleano
Recorrido de la lista LSE_Recorrer(nombreLista )
Modificación de Nodos LSE_AsignarContenidoNodo(referenciaNodo, valorContenido) LSE_AsignarEnlaceNodo(referenciaNodo, valorEnlace)
Acceso a los nodos LSE_ContenidoNodo(referenciaNodo) : contenido LSE_SiguienteNodo(referenciaNodo) : enlace
5
TDA Lista Simple Ordenada (LSO)
Definición <listaOrdenada> ::= <comienzo> + {<nodo>}
<comienzo> ::= <enlace> <enlace> ::= (<<referencia_nodo>> | NULL) <nodo> ::= <clave> + <contenido> + <enlace> <clave> ::= <<dato>>{<<dato>>} <contenido> ::= {<<dato>>}
Operaciones Creación/Eliminación
LSO_Crear(nombreLista) LSO_Eliminar(nombreLista)
Comprobación de Estado LSO_EstaVacia(nombreLista) : Booleano LSO_EstaVacia(referenciaNodo) : Booleano LSO_EstaLlena(nombreLista) : Booleano
Inserción de Nodos LSO_InsertarNodo(nombreLista, valorClave, nodo)
Borrado de Nodos LSO_BorrarNodo(nombreLista, valorClave)
Búsqueda de un nodo LSO_BuscarNodo(nombreLista, valorClave) : informacion LSO_BuscarNodo(nombreLista, valorClave) : referenciaNodo LSO_EsNodoDeLista(nombreLista, valorClave) : Booleano
Recorrido LSO_Recorrer(nombreLista )
Modificación de Nodos LSO_AsignarContenidoNodo(referenciaNodo, valorContenido) LSO_AsignarEnlaceNodo(referenciaNodo, valorEnlace) LSO_AsignarEnlaceNodo(referenciaNodo, valorClave)
Acceso a los nodos LSO_ContenidoNodo(referenciaNodo) : contenido LSO_SiguienteNodo(referenciaNodo) : enlace LSO_ClaveNodo(referenciaNodo) : clave
6
TDA Lista Doblemente Enlazada (LDE)
Definición <lde> ::= <comienzo> + {<nodo>} <comienzo> :: = <enlace> <enlace> ::= (<<referencia_nodo>> | NULL) <nodo> ::= <contenido>+<predecesor>+<sucesor> <predecesor> ::= <enlace> <sucesor> ::= <enlace> < contenido > ::= <<dato>>{<<dato>>}
Operaciones Creación/Destrucción
LDE_Crear(nombreLista) LDE_Eliminar(nombreLista)
Comprobación de Estado LDE_EstaVacia(nombreLista) : Booleano LDE_EstaVacia(referenciaNodo) : Booleano LDE_EstaLlena(nombreLista) : Booleano
Inserción de Nodos LDE_InsertarNodo(nombreLista, nodo, posicion) LDE_InsertarNodo(nombreLista, nodo)
Borrado de Nodos LDE_BorrarNodo(nombreLista, valorInfo)
Búsqueda de un nodo LDE_BuscarNodo(nombreLista, dato) : contenido LDE_BuscarNodo(nombreLista, dato) : referenciaNodo LDE_EsNodoDeLista(nombreLista,nodo) : Booleano
Recorrido de la lista LDE_Recorrer(nombreLista )
Modificación de Nodos LDE_AsignarContenidoNodo(referenciaNodo, valorContenido) LDE_AsignarEnlaceNodo(referenciaNodo, valorEnlace)
Acceso a los nodos LDE_ContenidoNodo(referenciaNodo) : contenido LDE_SiguienteNodo(referenciaNodo) : enlace LDE_AnteriorNodo(referenciaNodo) : enlace
7
TDA Pila
Definición <pila> ::= <cabecera> + {<nodo>} <cabecera> ::= <enlace> <enlace> ::= (<<ReferenciaNodo>> | NULL) <nodo> ::= <contenido> + <enlace> <contenido> ::= <<dato>>{<<dato>>}
Operaciones Creación/Destrucción
Pila_Crear(nombrePila) Pila_Eliminar(nombrePila)
Comprobación de Estado Pila_EstaVacia(nombrePila) : Booleano Pila_EstaLlena(nombrePila) : Booleano
Inserción de Nodos Pila_InsertarNodo(nombrePila, nodo)1
Extracción de Nodos Pila_SacarNodo(nombrePila): nodo2
Acceso a la cabecera Pila_Tope(nombrePila): nodo
1 Push 2 Pop
8
TDA Cola
Definición <cola> ::= <frente> + <final> + {<nodo>} <frente> ::= <enlace> <enlace> ::= (<<ReferenciaNodo>> | NULL) <final> ::= <enlace> <nodo> ::= <contenido> + <enlace> <contenido> ::= <<dato>>{<<dato>>}
Operaciones Creación/Destrucción
Cola_Crear(nombreCola) Cola_Eliminar(nombreCola)
Comprobación de Estado Cola_EstaVacia(nombreCola) : Booleano Cola_EstaLlena(nombreCola) : Booleano
Inserción de Nodos Cola_InsertarNodo(nombreCola, nodo)3
Extracción de Nodos Cola_SacarNodo(nombreCola): nodo4
Acceso a la cabecera Cola_Tope(nombreCola): nodo
3 Push 4 Pop
9
TDA Árbol
Definición <arbol> ::= <<NULL>> | <nodo> <nodo> ::= <contenido>{<arbol>} <contenido> ::= <<dato>>{<<dato>>}
Operaciones Dependen de las características particulares del árbol
10
TDA Árbol Binario (AB)
Definición <arbol>::= nulo | <nodo> <nodo>::=<contenido>+<izq>+<der> <izq>::=<arbol> <der>::=<arbol> <contenido>::<<dato>>|{<<dato>>}
Operaciones Creación/Destrucción
ABin_Crear(nombreArbol) ABin_Eliminar(nombreArbol)
Comprobación de Estado ABin_EstaVacio(nombreArbol) : Booleano ABin_EstaLleno(nombreArbol) : Booleano
Inserción de Nodos ABin_InsertarNodo(nombreArbol, nodo)
Extracción de Nodos ABinl_SacarNodo(nombreArbol, nodo): nodo
Búsqueda de Nodo ABin_Buscar(nombreArbol, contenido ): nodo
Recorrido ABin_Recorrer(nombreArbol, tipoRecorrido)
Modificación de Nodos
ABin_AsignarContenidoNodo(referenciaNodo, valorContenido) ABin_AsignarEnlaceIzqNodo(referenciaNodo, valorEnlace) ABin_AsignarEnlaceDerNodo(referenciaNodo, valorEnlace)
Acceso a los nodos ABin_ContenidoNodo(referenciaNodo) : contenido ABin_IzqNodo(referenciaNodo) : enlace Abin_DerNodo(referenciaNodo) : enlace Abin_EsHojaNodo(referenciaNodo) : bool
11
TDA Árbol Binario Búsqueda (ABB)
Definición <abb>::= <<NULL>> | <nodo> <nodo>::=<clave>+<contenido>+<izq>+<der> <izq>::=<arbol> <der>::=<arbol> <clave>::<<dato>>|{<<dato>>} <contenido>::<<dato>>|{<<dato>>}
Operaciones Creación/Destrucción
ABB_Crear(nombreArbol) ABB_Eliminar(nombreArbol)
Comprobación de Estado ABB_EstaVacio(nombreArbol) : Booleano ABB_EstaLleno(nombreArbol) : Booleano
Inserción de Nodos ABB_InsertarNodo(nombreArbol, nodo, valorClave)
Extracción de Nodos ABB_SacarNodo(nombreArbol, valorClave): nodo
Búsqueda de Nodo ABB_Buscar(nombreArbol, valorClave): nodo
Recorrido ABB_Recorrer(nombreArbol, tipoRecorrido)
Modificación de Nodos
ABB_AsignarContenidoNodo(referenciaNodo, valorContenido) ABB_AsignarEnlaceIzqNodo(referenciaNodo, valorEnlace) ABB_AsignarEnlaceDerNodo(referenciaNodo, valorEnlace)
Acceso a los nodos ABB_ClaveNodo(referenciaNodo) : clave ABB_ContenidoNodo(referenciaNodo) : contenido ABB_IzqNodo(referenciaNodo) : enlace ABB_DerNodo(referenciaNodo) : enlace ABB_EsHojaNodo(referenciaNodo) : bool
12
TDA Árbol Adelson, Velkii & Landis (AVL)
Definición <avl>::= <<NULL>> | <nodo> <nodo>::=<clave>+<contenido>+<izq>+<der>+<factor_equilibrio> <izq>::=<arbol> <der>::=<arbol> <clave>::<<dato>>|{<<dato>>} <contenido>::<<dato>>|{<<dato>>} < factor_equilibrio> ::= (<<-1>> | <<0>> | <<1>>)
Operaciones Creación/Destrucción
AVL_Crear(nombreArbol) AVL_Eliminar(nombreArbol)
Comprobación de Estado AVL_EstaVacio(nombreArbol) : Booleano AVL_EstaLleno(nombreArbol) : Booleano
Inserción de Nodos AVL_InsertarNodo(nombreArbol, nodo, valorClave)
Extracción de Nodos AVL_SacarNodo(nombreArbol, valorClave): nodo
Búsqueda de Nodo AVL_Buscar(nombreArbol, valorClave): nodo
Recorrido AVL_Recorrer(nombreArbol, tipoRecorrido)
Modificación de Nodos
AVL_AsignarContenidoNodo(referenciaNodo, valorContenido) AVL_AsignarEnlaceIzqNodo(referenciaNodo, valorEnlace) AVL_AsignarEnlaceDerNodo(referenciaNodo, valorEnlace)
Acceso a los nodos AVL_ClaveNodo(referenciaNodo) : clave AVL_ContenidoNodo(referenciaNodo) : contenido AVL_IzqNodo(referenciaNodo) : enlace AVL_DerNodo(referenciaNodo) : enlace AVL_EsHojaNodo(referenciaNodo) : bool
Equilibrio AVL_II(referenciaNodo) AVL_ID(referenciaNodo) AVL_DD(referenciaNodo) AVL_DI(referenciaNodo)
13
TDA Árbol B (AB)
Definición <arbolB> ::= <raiz> + {<pagina>} <raiz> ::= <enlace> <enlace> ::= (<<referencia_pagina>> | NULL) <pagina>::= <<numero_elementos>> + <antecesora> + <nodo>{<nodo>} <antecesora> ::= <enlace> <nodo> ::= <clave> + <contenido> + <siguiente> <clave> ::= <<dato>>{<<dato>>} <dato> ::= {<<dato>>} <siguiente> ::= <enlace>
Operaciones Creación/Destrucción
AB_Crear(nombreArbol) AB_Eliminar(nombreArbol)
Comprobación de Estado AB_EstaVacio(nombreArbol) : Booleano AB_EstaLleno(nombreArbol) : Booleano
Inserción de Nodos AB_InsertarNodo(nombreArbol, nodo, valorClave)
Extracción de Nodos AB_SacarNodo(nombreArbol, valorClave): nodo
Búsqueda de Nodo AB_Buscar(nombreArbol, valorClave): nodo
Recorrido AB_Recorrer(nombreArbol, tipoRecorrido)
Modificación de Nodos
AB_AsignarContenidoNodo(referenciaNodo, valorContenido) AB_AsignarEnlaceIzqNodo(referenciaNodo, valorEnlace) AB_AsignarEnlaceDerNodo(referenciaNodo, valorEnlace)
Acceso a los nodos AB_ClaveNodo(referenciaNodo) : clave AB_ContenidoNodo(referenciaNodo) : contenido AB_IzqNodo(referenciaNodo) : enlace AB_DerNodo(referenciaNodo) : enlace AB_EsHojaNodo(referenciaNodo) : bool
14
TDA Grafo
Definición <grafo> :: = {<vertice>} + {<arista>} <vertice> ::= <<refVertice>> + [<<contenido>>] <arista> ::= <<refVertice>> + <<refVertice>> <grafoEtiquetado> :: = {<vertice>} + {<aristaEtiquetada>} <vertice> ::= <<refVertice>> + [<<contenido>>] <aristaEtiquetada> ::= <<refVertice>>+<<refVertice>>+<<etiqueta>>
Operaciones Creación/Destrucción
GRAFO_Crear(nombreGrafo) GRAFO_Eliminar(nombreGrafo)
Comprobación de Estado GRAFO_EstaVacio(nombreGrafo) : Booleano GRAFO_EstaLleno(nombreGrafo) : Booleano
Inserción GRAFO_InsertarVertice(nombreGrafo, vertice) GRAFO_InsertarArista(nombreGrafo, vertice1, vertice2)
Extracción GRAFO_SacarVertice(nombreGrafo, vertice): vertice GRAFO_SacarArista(nombreGrafo, arista): arista
Búsqueda GRAFO_Buscar(nombreGrafo, contenido): vertice
Recorrido GRAFO_Recorrer(nombreGrafo, tipoRecorrido)
Acceso a los vértices
GRAFO_ContenidoVertice(referenciaVertice) : contenido GRAFO_GradoVertice (referenciaVertice) : entero GRAFO_GradoEntranteVertice (referenciaVertice) : entero GRAFO_GradoSalienteVertice (referenciaVertice) : entero GRAFO_AdyacentesVertice (referenciaVertice) : {referenciaVertice} GRAFO_IncidentesVertice (referenciaVertice) : {referenciaArista} GRAFO_SonAdyacentes(referenciaVertice1, referenciaVertice2) :bool
Acceso a las aristas GRAFO_VerticesArista(referenciaArista) : {refVertice1, refVertice2} GRAFO_DestinoArista(referenciaArista) : refVertice GRAFO_OrigenArista(referenciaArista) : refVertice GRAFO_EtiquetaArista(referenciaArista) : etiqueta
15
Modificación de Vértices
GRAFO_AsignarContenidoVertice(referenciaVertice, valorContenido)
Modificación de Aristas GRAFO_AsignarEtiquetaArista(referenciaArista, valorEtiqueta)