Tarea 1: Ejercicios de pilas
Elaborar un programa que lea una expresón en notación infija y la traduzca a Posfija
#include <stdio.h> #include <conio.h> #include <string.h> #define MAXIMO 30 struct LIFO { int t; char a[MAXIMO]; }; void main () { char posfijo [100],infijo[100]; void in_a_pos (char *infijo,char *posfijo); int i; printf ("De expresion escrita correctamente en infijo.\n"); printf ("La expresion SI puede tener parentesis\n"); gets (infijo); i = strlen (infijo); infijo [i] = '#'; infijo [i+1] = '\0'; in_a_pos (infijo,posfijo); printf ("%s %s ",infijo,posfijo); } void in_a_pos (char *infijo,char *posfijo) { struct LIFO pila; int i,j; char elemento; int operando (char c); int prioridad (char op1,char op2); char tope (struct LIFO p); void init_pila (struct LIFO *p); int pila_vacia (struct LIFO *p); void ins_pila (struct LIFO *p,char s); void retira_pila (struct LIFO *p,char *s); i=0; j=-1; init_pila (&pila); while (infijo [i] != '#') { if (operando (infijo [i]) ) posfijo [++j] = infijo [i++]; else { while (!pila_vacia (&pila) && prioridad (tope (pila),infijo [i] ) ) { retira_pila (&pila,&elemento); posfijo [++j] = elemento; } if (infijo [i] == ')') retira_pila (&pila,&elemento); else ins_pila (&pila,infijo [i]); i++; } } while (!pila_vacia (&pila) ) { retira_pila (&pila,&elemento); posfijo [++j] = elemento; } posfijo [++j] = '\0'; }
No hay comentarios:
Publicar un comentario