notaciÓn postfija e infija - java

10
FACULTAD DE INGENIERÍA ESCUELA DE SISTEMAS NOTACIÓN POSTFIJA E INFIJA NOMBRE: Contreras Ulloa, Shirley Asunción. CICLO: III-A DOCENTE: Ing. Oscar Alcántara Moreno CURSO: Estructura de Datos

Upload: shirley-contreras-ulloa

Post on 15-Jun-2015

9.020 views

Category:

Technology


4 download

DESCRIPTION

Aqui esta el codigo en java de la notación post fija e infija.

TRANSCRIPT

Page 1: NOTACIÓN POSTFIJA E INFIJA - JAVA

FACULTAD DE INGENIERÍAESCUELA DE SISTEMAS

NOTACIÓN POSTFIJA E INFIJANOMBRE: Contreras Ulloa, Shirley Asunción.CICLO: III-ADOCENTE: Ing. Oscar Alcántara MorenoCURSO: Estructura de Datos

Page 2: NOTACIÓN POSTFIJA E INFIJA - JAVA

NOTACIÓN POSTFIJA E INFIJAclass nodo{

private char caracter;private nodo enlace;private nodo(char x){

caracter=x;enlace=null;

}//constructorpublic nodo(char x, nodo enlc){

caracter=x;enlace=enlc;

}public void asigna_enlace(nodo enlc){

enlace=enlc;}public void asigna_caracter(char x){

caracter=x;}public char retorna_caracter(){

return caracter;}public nodo retorna_enlace(){

return enlace;}public void mostrar_nodo(){

System.out.println(caracter+" ");//System.out.println("El enlace es: "+enlace);

}}

class cola{

private nodo primero;//constructorpublic cola(){

primero=null;}public boolean vacia(){

if(primero==null)return true;

2

Page 3: NOTACIÓN POSTFIJA E INFIJA - JAVA

elsereturn false;

}public void insertar_cola(char x)//este tipo de insertar es el mismo {

nodo nuevo =new nodo(x, null); //que el de una lista enlazada insertar al finalif(primero==null)

primero=nuevo; else {

nodo ultimo=primero;while(ultimo.retorna_enlace()!=null){ ultimo=ultimo.retorna_enlace();}ultimo.asigna_enlace(nuevo);

}}public void eliminar_primero(){

if(primero!=null)primero=primero.retorna_enlace();

}public char retorna_primero(){

return primero.retorna_caracter();}public void mostrar_cola(){

nodo aqui=primero;System.out.println("La cola es: ");while(aqui!=null){

aqui.mostrar_nodo();aqui=aqui.retorna_enlace();

}System.out.println("Se mostro la cola");

}}

class pila{

private nodo cima;//constructorpublic pila(){

cima=null;}public boolean vacia(){

if(cima==null)return true;

3

Page 4: NOTACIÓN POSTFIJA E INFIJA - JAVA

elsereturn false;

}public void insertar_cima(char x)//este tipo de insertar es el mismo {

nodo nuevo=new nodo(x, cima);cima=nuevo;

}public char retorna_cima() {

return cima.retorna_caracter();}public void eliminar_cima(){

if(cima!=null){

cima=cima.retorna_enlace();}

}public void mostrar_pila(){

nodo aqui=cima;System.out.println("Los nodos de la pila");while(aqui!=null){

aqui.mostrar_nodo();aqui=aqui.retorna_enlace();

}System.out.println("Se mostraron todos los nodos de la pila");

}}

class nodo2{

private double caracter;private nodo2 enlace;private nodo2(double x){

caracter=x;enlace=null;

}//constructorpublic nodo2(double x, nodo2 enlc){

caracter=x;enlace=enlc;

}public void asigna_enlace(nodo2 enlc){

enlace=enlc;}public void asigna_caracter(double x)

4

Page 5: NOTACIÓN POSTFIJA E INFIJA - JAVA

{caracter=x;

}public double retorna_caracter(){

return caracter;}public nodo2 retorna_enlace(){

return enlace;}public void mostrar_nodo(){

System.out.println(caracter+" ");//System.out.println("El enlace es: "+enlace);

}}

class pila2{

private nodo2 cima;//constructorpublic pila2(){

cima=null;}public boolean vacia(){

if(cima==null)return true;

elsereturn false;

}public void insertar_cima(double x)//este tipo de insertar es el mismo {

nodo2 nuevo=new nodo2(x, cima);cima=nuevo;

}public double retorna_cima() {

return cima.retorna_caracter();}public void eliminar_cima(){

if(cima!=null){

cima=cima.retorna_enlace();}

}public void mostrar_pila(){

nodo2 aqui=cima;

5

Page 6: NOTACIÓN POSTFIJA E INFIJA - JAVA

System.out.println("Los nodos de la pila");while(aqui!=null){

aqui.mostrar_nodo();aqui=aqui.retorna_enlace();

}System.out.println("Se mostraron todos los nodos de la pila");

}}

import java.io.*;class aplicacion{

public static void main (String [] args){

BufferedReader entra =new BufferedReader(new InputStreamReader(System.in));

pila pilita = new pila();cola colita = new cola();char caracter='\0';int pp=0, pe=0;String exp_infija="";try{

System.out.println("La expresión Infija es: ");exp_infija=entra.readLine();for(int i=0; i<exp_infija.length(); i++){

caracter=exp_infija.charAt(i);switch(caracter){

case '+': case '-': case '*': case '/': case '^':

if(pilita.vacia()){

pilita.insertar_cima(caracter);}else{

pe=prioridad(caracter);pp=prioridad(pilita.retorna_cima());if(pe>pp)

pilita.insertar_cima(caracter);else{while(!pilita.vacia() &&(pe<=pp)){

colita.insertar_cola(pilita.retorna_cima());

6

Page 7: NOTACIÓN POSTFIJA E INFIJA - JAVA

pilita.eliminar_cima(); if(!pilita.vacia()) {

pp=prioridad(pilita.retorna_cima()); }}pilita.insertar_cima(caracter);}

}break;

case '(':pilita.insertar_cima(caracter);break;

case ')':while(pilita.retorna_cima()!='('){

colita.insertar_cola(pilita.retorna_cima());pilita.eliminar_cima();

}pilita.eliminar_cima();break;

default:colita.insertar_cola(caracter);

}}while(!pilita.vacia()){ colita.insertar_cola(pilita.retorna_cima()); pilita.eliminar_cima();}System.out.println("La Expresion postfija es: ");colita.mostrar_cola();

//Inicia la operaciones para encontrar el resultadodouble opn1,opn2,r,num_ca,res;// donde r es resultado preliminar,

num_ca es el numero que da del codigo asqui pila2 p = new pila2(); while(!colita.vacia())

{ caracter=colita.retorna_primero();

colita.eliminar_primero(); switch(caracter) {

case '+': case '-': case '*': case '/': case '^': opn2=p.retorna_cima(); p.eliminar_cima();

7

Page 8: NOTACIÓN POSTFIJA E INFIJA - JAVA

opn1=p.retorna_cima(); p.eliminar_cima(); r=opciones(opn1,opn2,caracter);

p.insertar_cima(r); break; default: num_ca=caracter-48; p.insertar_cima(num_ca);

} } res=p.retorna_cima(); System.out.println("El resultado es : "+res);}catch(Exception err){

System.out.println("Error en el ingreso de datos"+err);}

}public static int prioridad(char operador){

int v=0;switch(operador){

case '(': v = 0; break;case '+': v = 1;

break;case '-': v = 1;

break;case '*': v = 2;

break;case '/': v = 2;

break;case '^': v = 3;

break;}return v;

}

public static double opciones(double opn1,double opn2,char operador){

double valor=0; switch(operador) {

case '^' : valor = Math.pow(opn1,opn2);break;case '*' : valor = opn1*opn2;break;case '/' : valor = opn1/opn2;break;case '+' : valor = opn1+opn2;break;case '-' : valor = opn1-opn2;break;

} return valor;

}

8

Page 9: NOTACIÓN POSTFIJA E INFIJA - JAVA

}

9