ed 02 0_tda_definicion_td_as-bnf

15

Click here to load reader

Upload: angel-lopez

Post on 18-Jun-2015

73 views

Category:

Education


0 download

TRANSCRIPT

Page 1: ED 02 0_tda_definicion_td_as-bnf

1

Definición de TDAs usando BNF

Estructura de Datos – FIEC03012

Page 2: ED 02 0_tda_definicion_td_as-bnf

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

Page 3: ED 02 0_tda_definicion_td_as-bnf

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

Page 4: ED 02 0_tda_definicion_td_as-bnf

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

Page 5: ED 02 0_tda_definicion_td_as-bnf

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

Page 6: ED 02 0_tda_definicion_td_as-bnf

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

Page 7: ED 02 0_tda_definicion_td_as-bnf

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

Page 8: ED 02 0_tda_definicion_td_as-bnf

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

Page 9: ED 02 0_tda_definicion_td_as-bnf

9

TDA Árbol

Definición <arbol> ::= <<NULL>> | <nodo> <nodo> ::= <contenido>{<arbol>} <contenido> ::= <<dato>>{<<dato>>}

Operaciones Dependen de las características particulares del árbol

Page 10: ED 02 0_tda_definicion_td_as-bnf

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

Page 11: ED 02 0_tda_definicion_td_as-bnf

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

Page 12: ED 02 0_tda_definicion_td_as-bnf

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)

Page 13: ED 02 0_tda_definicion_td_as-bnf

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

Page 14: ED 02 0_tda_definicion_td_as-bnf

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

Page 15: ED 02 0_tda_definicion_td_as-bnf

15

Modificación de Vértices

GRAFO_AsignarContenidoVertice(referenciaVertice, valorContenido)

Modificación de Aristas GRAFO_AsignarEtiquetaArista(referenciaArista, valorEtiqueta)