EJERCICIOS Listas, Pilas y Colas

Slides:



Advertisements
Presentaciones similares
Infijo a postfijo Expr -> Expr + Término Expr -> Expr - Término
Advertisements

ESTRUCTURA DE DATOS Unidad 03 PILAS.
ÁRBOLES DE EXPRESION.
APLICACIONES DE PILAS Estructuras de Datos.
Arboles Binarios de expresiones
EXPONENTES Y RADICALES
Sistemas de Numeración
Licenciatura en Informatica
ESTRUCTURA DE DATOS ESD-243
FORMA INTERNA DE REPRESENTAR
República Bolivariana de Venezuela. Ministerio del PP para la Defensa. Universidad Nacional Experimental de la Fuerza Armada. Cátedra: Instrucción Militar.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Introducción a Excel Fórmulas
Lic. En C.C. Ann Margareth Meza Rodríguez
Presente un cuestionario con los aspectos mas importantes sobre los
Lic. Carla Aguirre Montalvo
Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación ENSAMBLADOR MC BEATRIZ BELTRÁN MARTÍNEZ.
Ficha de datos Créditos Institucionales: 8 créditos.
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
Unidad Temática II Algoritmia Elemental Operadores aritméticos: son símbolos que le indican al compilador la operación de cálculo a realizar entre los.
ESTRUCTURAS DE DATOS Y ALGORITMOS Samuel Peñaló
GESTOR DE BASE DE DATOS CARRERA: COMPUTACIÓN E INFORMÁTICA CURSO: TALLER DE SISTEMAS I DOCENTE: ING. JOSÉ EDUARDO QUISPE TAIPE CICLO: QUINTO.
Unidad 1: Conceptos fundamentales Instituto Tecnológico de Toluca Ing. Sistemas Computacionales Asignatura: Programación Lógica y Funcional Presentan Nieto.
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
Matemática Operaciones básicas. Aritmética Es la rama de la matemática cuyo objeto de estudio son los números y las operaciones elementales hechas con.
1 Autómatas de pila (Pushdown automata). 2 Autómata de conteo Autómata finito determinista con un contador de enteros o “bolsa” en la que se colocan o.
Ingreso , proceso y salida de datos
MAX- MSP 03 Sergio Floody.
ECUACIONES Ing. Robin Anguizaca F..
IntroducciÓn a los Arreglos (“arrays”) en C++
ALGEBRA DE MATRICES Uso de MatLab.
Unidad 6 Inecuaciones
Complejidad Programación II de febrero de 2009.
Computación Valeria Herskovic –
Básicos de Autómatas.
PSEUDOCÓDIGO Prof. Rafael Mourglia.
Explicación de los ejercicios de la evaluación Nº2
TUTORIAL PSeint.
CREAR DIAGRAMA DE FLUJO
Constantes y variables
PILAS. Operaciones de las Pilas Operaciones que se pueden realizar con una pila son: -PUSH (pila, elemento) -POP (pila) -VACIA (pila)
DECIMALES DECIMALES.
Aprendiendo Java Pilas y Colas Por Juan Astudillo.
Método de eliminación Gauss- Jordán y Gaussiano
EXPRESIONES Una expresión es una forma especial de asignación.
Unidad 2. Algoritmos Unidad 4. Control de flujo
Introducción a las estructuras de datos
para integrar funciones
Organización del Computador 1 Sistemas de Representación.
ARREGLOS BIDIMENSIONALES MATRICES Son un espacio de almacenamiento continuo, que contiene una serie de elementos del mismo tipo de datos. Desde el punto.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
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.
Retroalimentación ejercicios de tarea. Ejercicios para resolver 1.¿Cuántos bytes hay exactamente en un sistema que contiene a.32 Kbytes b.64 Mbytes c.6.4.
HERRAMIENTAS DE PROGRAMACIÓN
Pilas y Colas.
Árboles clase 6 Apoyo de Práctica. Resumen ●Árboles ○Concepto ○Características ○Dinámica ○Recorridos o barridos. ●Ejercicio Sugerido.
Estructuras de Repetición Pseudocodigo1 Estructuras de Repetición Algoritmos Mientras Hacer-Mientras Para.
UNIDAD 4 OPERACIONES CON POLINOMIOS. MAPA DE NAVEGACIÓN Operaciones con Polinomios Índice Objetivo General Ejemplos Objetivo 1 Objetivo 2 Objetivo 4 Objetivo.
FORMULARIOS: PROYECTO Y DESENVOLVIMIENTO
Instituto Tecnológico de Minatitlán
Ensamblador MC Beatriz Beltrán Martínez
FRACCIONES: Interpretación
Á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.
COLAS O LINEA DE ESPERA EN C# SHARP. ¿QUE ES UNA COLA O LINEA DE ESPERA?  Es una estructura de datos que almacena elemento en una lista y permite acceder.
Estructuras de Repetición Algoritmos
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
Expresiones– Parte 2 PYTHON PARA TODOS Expresiones.
Contenidos Potencias. Propiedades de las Potencias. Raíz y raíz cuadrada. Propiedades de las raíces. Orden en las operatorias (PAPOMUDAS)
SISTEMAS NUMERICOS “Introducción a la Programación” Rolando Montero.
Transcripción de la presentación:

EJERCICIOS Listas, Pilas y Colas Facultad de Ciencias y Tecnología Departamento de Computación

Enunciado: Intercambiar el tope y el fondo de una pila Ñ F fondo

Análisis de la solución T TOPE F Ñ P fondo A T Pila original Pila Auxiliar

Análisis de la solución T TOPE F Ñ P fondo A Pila original Pila Auxiliar

Análisis de la solución TOPE F Ñ P fondo A T Pila original Pila Auxiliar

Análisis de la solución T TOPE F Ñ P fondo Pila original Pila Auxiliar

Análisis de la solución P A T TOPE F Ñ fondo Pila original Pila Auxiliar

Análisis de la solución Ñ P A T TOPE F Pila original Pila Auxiliar

Análisis de la solución F Ñ P A T TOPE Pila original Pila Auxiliar

Análisis de la solución F Ñ P A T TOPE Pila original Pila Auxiliar

Análisis de la solución F T TOPE Ñ P A Pila original Pila Auxiliar

Análisis de la solución F Ñ P A TOPE T Pila original Pila Auxiliar

Análisis de la solución F TOPE Ñ P T A Pila original Pila Auxiliar

Análisis de la solución F TOPE P Ñ T A Pila original Pila Auxiliar

Análisis de la solución F TOPE A P Ñ T Pila original Pila Auxiliar

Análisis de la solución TOPE F A P Ñ T Pila original Pila Auxiliar

Algoritmo P1,P2: Pila[Elemento]; Top,Fondo:Elemento; Vaciap(p2); TopTope(p1); Si ( EsVacia(p1)) Entonces Desapilar(p1); Mientras( EsVacia(p1)) Hacer FondoTope(p1) Apilar(p2,Fondo); FMientras //Creación de la pila con el tope y fondo invertidos Apilar(p1,Top) Si ( EsVacia(p2)) Entonces Desapilar(p2); Mientras ( EsVacia(p2))Hacer Apilar(p1,Tope(p2)) Desapilar(p2) Apilar(p1,Fondo) Sino Escribir(“Error, pila vacia”) Fsi Escribir(“Error, pila vacia”); fsi

Enunciado: Modificar una lista eliminando los n primeros elementos 10 25 11 32 44 15 Eliminar los primeros 3 elementos

Enunciado: Modificar una lista eliminando los n primeros elementos 25 11 32 44 15

Enunciado: Modificar una lista eliminando los n primeros elementos 11 32 44 15

Enunciado: Modificar una lista eliminando los n primeros elementos 32 44 15

Si (n<=Longitud(L1) Entonces Mientras(i<=n   EsVacia(L1) Hacer Algoritmo L1: Lista; i,n : entero; Leer(n); ***Suponemos que la lista está creada y tiene elementos i1 Si (n<=Longitud(L1) Entonces Mientras(i<=n   EsVacia(L1) Hacer Resto(L1); ii+1; fMientras

Enunciado: Intercambiar las posiciones p y q de una lista 10 25 11 32 44 15 2 5

Análisis de la solución 10 25 11 32 44 15 2 5 25 44 Se obtienen los elementos de las posiciones p y q a intercambiar

Análisis de la solución 10 11 32 44 15 2 5 44 Eliminando el elemento de la posición p, en este caso 2

Análisis de la solución 10 44 11 32 44 15 2 5 Insertando en la posición p el elemento que estaba en q

Análisis de la solución 10 44 11 32 15 2 5 25 Eliminando de la posición q el elemento allí colocado

Análisis de la solución 10 44 11 32 25 15 2 5 Insertando en la posición q el elemento que estaba en p

Algoritmo L: Lista[Elemento]; p,q: entero; Elem_p,Elem_q: Elemento; Leer(p,q); Si (EsVacia(L)  p<=Longitud(L)  q<=Longitud(L)) Entonc Elem_pConsultar(L,p); Elem_qConsultar(L,q); Eliminar(L,p) Insertar(L,Elem_q,p) Eliminar(L,q) Insertar(L,Elem_p,q) Sino Escribir(“Error, posiciones invalidas o lista vacia”); Fsi

Elaborar un algoritmo que evalúe una expresión en notación polaca inversa (postfija)

Análisis de la Solución Una expresión en notación Infija (usual) es de la forma: (2*5) + 3 =

Análisis de la Solución Y su evaluación se realiza de izquierda a derecha de acuerdo a la prioridad de los operadores (2*5) + 3 = 10 + 3

Análisis de la Solución Y su evaluación se realiza de izquierda a derecha de acuerdo a la prioridad de los operadores (2*5) + 3 = 13

Análisis de la Solución Infija Postfija (2*5) + 3 2 5 * 3 +

Análisis de la Solución Evaluaremos expresiones en notación postfija usando pilas

Análisis de la Solución Para evaluar una expresión en notación postfija: Se apilan los operandos Cuando aparece un operador, se desapilan dos operandos y el resultado, también se apila

Análisis de la Solución Dada la expresión en postfija: 2 5 * 3 + Se lee el operando 2 y se apila TOPE 2

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se lee el operando 5 y se apila 2 TOPE 5

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se lee el Siguiente elemento: Es un operador TOPE 2 5

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se desapilan dos operandos 2 5 TOPE x2

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se desapilan dos operandos 5 2 x2 x1 TOPE

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se operan entre si * 5 2 x2 x1 TOPE

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + El resultado se apila * 5 2 x2 x1 10 TOPE

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + El resultado se apila * 5 2 TOPE 10

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se lee el siguiente elemento: Es un operando, Por lo tanto se apila TOPE 10

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se lee el siguiente elemento: Es un operando, Por lo tanto se apila TOPE 3 10

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se lee el siguiente elemento: Es un operador, TOPE 3 10

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se desapilan 2 operandos TOPE 10 3 x2

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se desapilan 2 operandos 3 10 TOPE x2 x1

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + Se operan los elementos: + 3 10 TOPE x2 x1

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + El resultado se apila + 3 10 x2 x1 TOPE

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + El resultado se apila + 3 10 x2 x1 13 TOPE

Análisis de la Solución Evaluando la expresión: 2 5 * 3 + El resultado se apila + 3 10 x2 x1 TOPE 13

Algoritmo Variables p: Pila[Elemento] s:cadena; x1,x2: Entero; c: carácter; Leer(s); **Cadena que contiene la expresion (en postfija) Vaciap (p);

Algoritmo Mientras (Longitud(s)>0) Hacer cPrimero(s); Si (EsNumero(c)) Entonces Selección(c) caso ‘+’: x2Tope(p); Desapilar(p); x1Tope(p) Apilar(p,x1+x2); . fSeleccion Sino Apilar(p,c); Fsi Resto (s) fMientras Escribir(“La expresion evaluada fue:”,Tope(p));

Algoritmo Casos de la selección (división) Selección(c) caso ’/’: x2Tope(p); Desapilar(p); x1Tope(p); Si(x20) Entonces Apilar(P,x1/x2) Sino Escribir(“Error, division por cero) fsi fSeleccion

Dada una expresión en notación infija, llevarla a notación postfija usando pilas

Procedimiento Dada la expresión en notacion infija (5*4)+3 Al llevarla a notación postfija: 5 4 * 3 + Las expresiones en postfija, no tienen paréntesis.

Procedimiento Dada una cadena, que contiene una expresión en notación infija, la idea es leer caracter a caracter de la cadena de entrada y tomar en cuenta lo siguiente:

Procedimiento Si el caracter es un operando, inmediatamente se añade a la expresión resultado. Si es un operador, se apila inmediatamente, de igual forma se van a apilar los paréntesis izquierdos. Si el elemento leído, es un paréntesis derecho, se sacan elementos de la pila (operadores) hasta que aparece un paréntesis izquierdo (correspondiente), el cual se desapila pero no se añade a la expresión resultado.

Procedimiento Si se ve cualquier otro símbolo en la entrada (‘+’, ’*’ , ’(‘ )´, entonces se sacan elementos de la pila hasta encontrar uno de menor prioridad. (Por lo que no se saca un ‘(‘ de la pila hasta que se vea su correspondiente paréntesis derecho ‘)’ en la cadena de entrada. Para los propósitos de esta operación + tiene la menor prioridad y ‘(’ la más alta, cuando se termina de sacar de la pila, se mete el operando en ella. Por último, si se llega al final de la entrada, se saca todo lo que está en la pila enviando cada elemento a la salida.

Ejemplo Llevar a postfija la siguiente expresión en notación infija: a + b * c + (d * e + f) * g

Ejemplo a + b * c + (d * e + f) * g Primer carácter: es un operando Expresión en infija a + b * c + (d * e + f) * g Primer carácter: es un operando Por lo tanto se añade a la Expresión resultado: a

Ejemplo + + b * c + (d * e + f) * g Siguiente carácter: es un operador Expresión en infija + b * c + (d * e + f) * g Siguiente carácter: es un operador Por lo tanto se apila a TOPE +

Ejemplo + b * c + (d * e + f) * g Siguiente carácter: es un operando, Expresión en infija b * c + (d * e + f) * g Siguiente carácter: es un operando, Se añade a la expresión resultado: a b TOPE +

Ejemplo * + * c + (d * e + f) * g Siguiente carácter: es un operador, Expresión en infija * c + (d * e + f) * g Siguiente carácter: es un operador, Por lo que se apila a b TOPE * +

Ejemplo * + c + (d * e + f) * g Siguiente carácter: operando, Expresión en infija c + (d * e + f) * g Siguiente carácter: operando, Se añade a la expresión resultado: a b c TOPE * +

Ejemplo * + + (d * e + f) * g Siguiente carácter: ’+’operando, Expresión en infija + (d * e + f) * g Siguiente carácter: ’+’operando, Caso Especial a b c Se desapilan operadores hasta conseguir uno de menor o igual prioridad al operador leído y se envían a la expresión resultado TOPE * +

Ejemplo + + (d * e + f) * g Caso Especial a b c * Expresión en infija Se desapilan operadores hasta conseguir uno de menor o igual prioridad al operador leído y se envían a la expresión resultado TOPE +

Ejemplo + (d * e + f) * g Caso Especial a b c * + Expresión en infija Se desapilan operadores hasta conseguir uno de menor o igual prioridad al operador leído y se envían a la expresión resultado TOPE

Ejemplo + + (d * e + f) * g Caso Especial a b c * + Expresión en infija + (d * e + f) * g Caso Especial a b c * + Luego se apila el operador leído TOPE +

Ejemplo + ( (d * e + f) * g Siguiente carácter: un paréntesis: Expresión en infija (d * e + f) * g Siguiente carácter: un paréntesis: Se apila. a b c * + TOPE ( +

Ejemplo + ( d * e + f) * g Siguiente carácter: un operando, Expresión en infija d * e + f) * g Siguiente carácter: un operando, Se añade a la expresión a b c * + d TOPE ( +

Ejemplo + * ( * e + f) * g Siguiente carácter: operador * Expresión en infija * e + f) * g Siguiente carácter: operador * Se apila aun cuando es de menor Prioridad que ‘(‘ a b c * + d TOPE “Los paréntesis no pueden desapilarse hasta que no aparezca un paréntesis derecho” * ( +

Ejemplo + * ( e + f) * g Siguiente carácter: ‘e’ se Expresión en infija e + f) * g Siguiente carácter: ‘e’ se Añade a la expresión a b c * + d e TOPE “Los paréntesis no pueden desapilarse hasta que no aparezca un paréntesis derecho” * ( +

Ejemplo + * ( + f) * g Siguiente carácter: + , sacamos * Expresión en infija + f) * g Siguiente carácter: + , sacamos * De la pila y lo añadimos a la expresion, Apilamos + a b c * + d e * TOPE * ( +

Ejemplo + ( + f) * g Siguiente carácter: + , sacamos * Expresión en infija + f) * g Siguiente carácter: + , sacamos * De la pila y lo añadimos a la expresion, Apilamos + a b c * + d e * TOPE ( +

Ejemplo + + ( + f) * g Siguiente carácter: + , sacamos * Expresión en infija + f) * g Siguiente carácter: + , sacamos * De la pila y lo añadimos a la expresion, Apilamos + a b c * + d e * TOPE + ( +

Ejemplo + + ( f) * g Siguiente carácter: f, se añade a la Expresión en infija f) * g Siguiente carácter: f, se añade a la Expresión resultado a b c * + d e * f TOPE + ( +

Ejemplo + + ( ) * g Siguiente carácter: ‘)’ se desapilan Expresión en infija ) * g Siguiente carácter: ‘)’ se desapilan Todos los operadores hasta que aparezca Un paréntesis izquierdo a b c * + d e * f TOPE + ( +

Ejemplo + ( ) * g Siguiente carácter: ‘)’ se desapilan Expresión en infija ) * g Siguiente carácter: ‘)’ se desapilan Todos los operadores hasta que aparezca Un paréntesis izquierdo a b c * + d e * f + TOPE ( +

Ejemplo + ) * g Siguiente carácter: ‘)’ se desapilan Expresión en infija ) * g Siguiente carácter: ‘)’ se desapilan Todos los operadores hasta que aparezca Un paréntesis izquierdo a b c * + d e * f + TOPE +

Ejemplo * + * g Siguiente carácter: *, se apila a b c * + d e * f + Expresión en infija * g Siguiente carácter: *, se apila a b c * + d e * f + TOPE * +

Ejemplo * + g Siguiente carácter: g, se añade a la Expresión resultado Expresión en infija g Siguiente carácter: g, se añade a la Expresión resultado a b c * + d e * f + g TOPE * +

Ejemplo * + Al quedar la cadena vacía, se desapilan Expresión en infija Al quedar la cadena vacía, se desapilan Los operadores y se añaden a la expresión resultado. a b c * + d e * f + g TOPE * +

Ejemplo + Al quedar la cadena vacía, se desapilan Expresión en infija Al quedar la cadena vacía, se desapilan Los operadores y se añaden a la expresión resultado. a b c * + d e * f + g * TOPE +

Ejemplo Al quedar la cadena vacía, se desapilan Expresión en infija Al quedar la cadena vacía, se desapilan Los operadores y se añaden a la expresión resultado. a b c * + d e * f + g * + TOPE

Ejercicio Propuesto Dada una cadena que contiene una expresión en notación infija, elabore un algoritmo que obtenga una expresión equivalente en notación Postfija. Use pilas.