Estructura de Datos En C++

Slides:



Advertisements
Presentaciones similares
PILA.
Advertisements

ESTRUCTURA DE DATOS Unidad 03 PILAS.
ESTRUCTURA DE DATOS Unidad 03 PILAS.
Programación Avanzada (semana 6) Verano 2004
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Estructuras de datos y algoritmos
Estructura de Datos En C++
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Programación Científica
Programación y Estructuras de Datos
Programación I Teoría III
Sintaxis básica del lenguaje
PROGRAMACION DE Pilas o Stacks y Colas
Estructuras de control
Estructuras de Datos Especificación formal de Listas.
Unidad 3 Punteros.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
ÁRBOLES DE EXPRESION.
Programación Científica
Estructura de Datos En C++
Cont. Arbol Binario de Búsqueda (2). Sobre los recorridos Las versiones recursivas de los recorridos son costosas debido a la gran cantidad de llamadas.
Estructuras dinámicas de datos, TAD Lista, parte 2
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
APLICACIONES DE PILAS Estructuras de Datos.
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Arboles Binarios de expresiones
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Estructura de Datos En C++
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
PILAS, COLAS, RECURSIVIDAD.
La Pila o Stack Programación. La pila (stack) es una estructura ordenada de elementos en la que se pueden insertar o remover elementos por un extremo.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Programación Científica
Estructura de Datos En C++
Estructura de Datos y Algoritmos
Clasificación de Gramáticas y Manejo de Errores
ARBOLES ESTRUCTURAS DE DATOS.
1 Estructuras de Datos Elementales:stacks (pilas), queues (colas), linked lists (listas enlazadas), y rooted trees (árboles con raíz) Agustín J. González.
Pila1UVM Pilas. Pila2UVM Pila3UVM 2.1 Objetivos El estudiante manejará el tad Pila contigua.
AED3: Algoritmos y Estructuras de Datos 3.  Uno de los conceptos mas utiles en computacion es la pila o stack  Es un conjunto de elementos, en la que:
FORMA INTERNA DE REPRESENTAR
Pilas y Colas Estructuras de Datos.
TDA PILA ESTRUCTURAS DE DATOS.
República Bolivariana de Venezuela. Ministerio del PP para la Defensa. Universidad Nacional Experimental de la Fuerza Armada. Cátedra: Instrucción Militar.
Programación en C para electrónicos
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
Introducción a la programación
Estructura de Datos En C++
Son estructuras de datos que almacenan y recuperan sus elementos atendiendo a un estricto orden (LIFO Last – in, first –out Ultimo en entrar – primero.
Términos algoritmo diseñar algoritmo implementar algoritmo
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
UNIDAD IV. PILAS, COLAS, RECURSION APLICADAS A LENGUAJE C.
Lic. En C.C. Ann Margareth Meza Rodríguez
Estructura de Datos En C++
Pilas y Colas Cursos Propedéuticos 2006 Programación y Estructuras de Datos Manuel Montes Claudia Feregrino
PROGRAMACION DE Pilas o Stacks
Estructura de Datos En C++
Estructura de Datos PILAS. es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In.
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
ESTRUCTURAS LINEALES “LA PILA”
OPERACIONES CON PILAS DECLARACIÓN O INICIALIZACIÓN DE LA PILA. Stack NombrePila=newStack (max);
PROGRAMACION DE Pilas o Stacks y Colas
Ficha de datos Créditos Institucionales: 8 créditos.
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
Listas Dinámicas.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
ÁRBOLES DE EXPRESION. Un árbol de expresión sirve para evaluar expresiones del tipo: (a+b)*c/d Para que un árbol represente una expresión se deben tomar.
Transcripción de la presentación:

Estructura de Datos En C++ Dr. Romeo Sánchez Nigenda. E-mail: romeo.sanchez@gmail.com http://yalma.fime.uanl.mx/~romeo/ Oficina: 1er. Piso del CIDET. Oficina con Dr. Oscar Chacón Horas de Tutoría: 10am-11am Martes y Jueves, 3:30pm-4:30pm Miércoles, 2:00pm-4:00pm Viernes. Website: http://yalma.fime.uanl.mx/~romeo/ED/2011/ Sesiones: 48

Objetivo General: Conocerá y manejará las estructuras internas de información Temario: Conceptos Básicos La Pila Colas Recursión Listas Árboles Ordenamiento Búsqueda Administración de Almacenamiento Total a calificar: 110 puntos. 40% Tareas 30% Examen Parcial 30% Examen Final 10% Participación

Material de apoyo: Software: Estructura de Datos con C y C++. Yedidyah Langsam, Moshe J. Augenstein, Aaron M. Tenenbaum, Brooklyn College Segunda Edición, Prentice-Hall. Algorithms. Third Edition. Parts 1-4, Fundamentals Data Structures Sorting Searching Robert Sedgewick. Estructura de Datos. Román Martínez, Elda Quiroga. Thomson Learning. Cualquier libro de Estructura de Datos! Software: Compiladores GCC (GNU Compiler Collection) IDEs (Integrated Development Environment): http://www.eclipse.org/downloads/ http://kdevelop.org/ http://www.bloodshed.net/devcpp.html

2. La Pila (Stack) Objetivo: El alumno aprenderá el concepto de la estructura denominada la pila y manejará la inserción y eliminación de elementos en ella, así como sus aplicaciones Temario: Definición y ejemplos Representación de Pilas Operaciones con Pilas Aplicaciones

La Pila (Stack) Conjunto de elementos en el cual se puede agregar y eliminar elementos por un extremo, el cual es llamado el tope o parte superior (top) de la pila. Tope Tope F E D C B A G F E D C B A Agrega ‘G’ Último elemento insertado es el primero en suprimirse (estructura LIFO). El único acceso es el tope de la pila

La Pila: Operaciones Primitivas Agregar (push(i)): Agrega elemento i al tope de la pila Remover (pop()): Remueve elemento del tope de la pila, y se aplica a pilas no vacías. Stacktop : Retorna el elemento superior de la pila sin quitarlo (pop + push). StackEmpty: Retorna verdadero si la pila está vacía, falso en lo contrario C B A B A B A A A D Vacía = True Push(A) Push(B) Push(C) Pop() Pop() Push(D)

Ejemplo Para verificar que una expresión aritmética es correcta verificamos que: Sus paréntesis están balanceados, es decir que el número de paréntesis que abres es el mismo al número de paréntesis que cierras. ((5+8)*10)/(3+5-9): Cada paréntesis izquierdo abre un ámbito, y cada derecho lo cierra. La profundidad de anidamiento en un determinado punto es la cantidad de ámbitos abiertos. Debe ser 0 en una expresión balanceada. ( ( 5, +, 8 ( *, 10 / ( 3,+,5,-,9 Push(‘(’) Push(‘(’) Pop () Pop () Push(‘(’)

Representación de Pilas Una pila requiere básicamente de dos elementos: Una variable suficientemente grande para almacenar los elementos insertados en la pila (por ejemplo un arreglo). Un campo que registre la posición actual del tope de la pila Ejemplo: #define STACKSIZE 100 //Tamaño de la Pila struct pila{ int cima; int elementos[STACKSIZE]; } struct pila p;

Representación de Pilas La operación isStackEmpty int isStackEmpty(struct pila * P){ return (P->cima == -1); } La operación Pop int pop (struct pila * P){ if(isStackEmpty(P)){ cout<<“Error Pila Underflow”; exit(1): return (P->elementos[P->cima--]); La operación Push void push(struct pila * P, int elemento){ if(cima== STACKSIZE-1){ cout<<“Error Pila Overflow”; S->cima++; S->elementos[cima]=elemento; return Cima 5 7 5 7 Cima-- Cima++ 5 7 Cima 5 7

Representación de Pilas La operación stackTop Int stackTop(struct pila * P){ if(isStackEmpty(P)){ cout<<“Error Pila Vacía”; exit(1): } return P->elementos[P->cima];

Ejemplo: Evaluación de una expresión postfija. Los prefijos pre, post e inter hacen referencia a la posición relativa del operador (e.g., +,-,*,/,$) A + B : Interfija AB + : Postfija + AB : Prefija Cuando evaluamos una expresión aritmética, utilizamos las reglas de precedencia de los operadores, por ejemplo: Exponenciación ($), Multiplicación, División Adición y Sustracción Operadores de misma precedencia se utiliza la regla de izquierda a derecha, exceptuando la exponenciación que es de derecha a izquierda

Ejemplos: Evaluación a una expresión postfija. Siguiendo las reglas de precedencia A + (B * C) A + (B C *) A (B C *) + A B C * + (A + B) * C (A B +) * C (A B +) C * A B + C * A + B – C A B + - C A B + C - (A + B) * (C – D) (A B +) * (C – D) (A B +) * (C D -) (A B +) (C D -) * A B + C D - * A $ B * C – D + E / F / (G + H) A $ B * C – D + E / F / (G H +) A B $ C * … E F / G H + / A B $ C * D - E F / G H + / + A – B / (C * D $ E) A – B (C * D $ E) / A – B (C * D E $) / A – B (C D E $ *) / A B (C D E $ *) / - A B C D E $ * / -

Ejemplo: Algoritmo para evaluar una expresión Postfija Cada operador en una cadena postfija hace referencia a los dos operandos anteriores en la cadena Uno de los operandos puede ser el resultado de aplicar un operador anterior Mipila = 0 //Pila vacía Cadena = getCadena() //Obtén la cadena postfija de entrada Int index = 0 //Apunta al primer elemento de la cadena while((symb = cadena[index] )!= NULL){ //Symb representa el carácter que se checará if(symb es un operando) push(Mipila, symb) else{ //Symb es un operador operando2 = pop(Mipila) operando1 = pop(Mipila) value = resultado de aplicar symb a operando1 y operando2 push(Mipila, value) index++ } return pop(Mipila)