Implementación Árbol de Expresión
Transcripción
Implementación Árbol de Expresión
Implementación de Árboles Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Árbol de Expresión Implementación TAD Nodo de Expresión ● ● Datos miembros: – dato del nodo. – clase del nodo (operando / operador). – apuntador a nodo (operando) izquierdo. – apuntador a nodo (operando) derecho. Operaciones: – constructores, destructores. – asignar, obtener el dato o la clase del nodo. – asignar, obtener una referencia a nodo (operando). NodoExpresion.h class NodoExpresion { protected: std::string dato; bool operando; NodoExpresion *hijoIzq; NodoExpresion *hijoDer; public: NodoExpresion(); NodoExpresion(std::string val); NodoExpresion(std::string val, NodoExpresion *izq, NodoExpresion *der); NodoExpresion.h ~NodoExpresion(); std::string obtenerDato(); void fijarDato(std::string val); bool obtenerOperando(); void fijarOperando(bool clase); NodoExpresion* obtenerHijoIzq(); NodoExpresion* obtenerHijoDer(); void fijarHijoIzq(NodoExpresion *izq); void fijarHijoDer(NodoExpresion *der); }; TAD Árbol de Expresión ● Estado: conjunto mínimo de datos. – ● Referencia al nodo raíz. Interfaz: comportamiento (operaciones). – constructores, destructores. – obtener, fijar el nodo raíz o el dato en la raíz. – verificación de árbol vacío. – llenar desde expresión posfija o prefija. – generar expresión prefija, infija o posfija. ArbolExpresion.h class ArbolExpresion { protected: NodoExpresion *raiz; public: ArbolExpresion(); ~ArbolExpresion(); bool esVacio(); std::string datoRaiz(); NodoExpresion* obtenerRaiz(); void fijarRaiz(NodoExpresion *nraiz); ArbolExpresion.h void llenarDesdePrefija (std::string &expresion); void llenarDesdePosfija (std::string &expresion); std::string obtenerPrefija(); std::string obtenerInfija(); std::string obtenerPosfija(); int evaluar(); }; Referencias ● L. Joyanes Aguilar, I. Zahonero. Algoritmos y estructuras de datos: una perspectiva en C. McGraw-Hill, 2004.