ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Estructura de datos ejercicios


Enviado por   •  11 de Octubre de 2015  •  Exámen  •  3.670 Palabras (15 Páginas)  •  89 Visitas

Página 1 de 15

PRIMER EXAMEN PARCIAL

2. Modifique el programa de Pila y Operadores para que maneje paréntesis,

class Pila{

String []cad;

private int prioridad;

int p;

int tope;

public Pila(){

tope = 0;

cad = new String[15];

prioridad = p;

}

public int traePrioridad(){

return prioridad;

}

public void mete(String c){

cad[tope] = c;

tope++;

}

public String saca(){

tope--;

return cad[tope];

}

public boolean esVacia(){

if (tope == 0){

return true;

}

else{

return false;

}

}

public String esTope(){

if (!esVacia()){

return cad[tope-1];

}

else {

return null;

}

}

}

public class Operadores {

Pila pila = new Pila();

private int prioridad(char c){

switch(c){

case '+': case '-': return 0;

case 'x': case '/': return 1;

case '^': return 2;

default : return 99;

}

}

private void trabajar(String []args){

int prio = 0;

if(args.length%2!=0){

for(int i=0;i

if(args[i].charAt(0) == '('){

prio += 10;

}else if(args[i].charAt(0) == ')'){

prio -= 10;

}

else{

if(pila.esVacia()){

pila.mete(args[i]);

} else{

while(!pila.esVacia() &&

prioridad(args[i].charAt(0))<=prioridad(pila.esTope().charAt(0))){

System.out.print(pila.saca());

}

pila.mete(args[i]);

}

}

}

while(!pila.esVacia()){

System.out.print(pila.saca());

}

}

}

public static void main(String []args){

Operadores op = new Operadores();

op.trabajar(args);

}

}

3. Modifique el programa NodoArbol y Arbol para que realice las operaciones con números enteros.

public class NodoArbol {

private int val;

private int prioridad;

public NodoArbol hijoIzquierdo, hijoDerecho;

public NodoArbol(int v, int p){

val = v;

prioridad = p;

hijoIzquierdo = hijoDerecho = null;

}

public int traeValor(){

return val;

}

public int traePrioridad(){

return prioridad;

}

public void escribe(){

System.out.print(val + " ");

}

}

public class Arbol {

public NodoArbol raiz;

public Arbol(){

raiz = null;

}

private NodoArbol creaLista2(NodoArbol r, NodoArbol m){

NodoArbol aux = r;

if(r==null){

r=m;

}

else{

while(aux.hijoDerecho!=null){

aux = aux.hijoDerecho;

}

aux.hijoDerecho = m;

m.hijoIzquierdo = aux;

}

return r;

}

private int prioridad(char c){

switch(c){

case '+': case '-': return 0;

case 'x': case '/': case 'm': return 1;

case 'p': return 2;

default : return 99;

}

}

private NodoArbol lista2Arbol(NodoArbol r){

NodoArbol aux = r;

while(aux.hijoDerecho != null){

aux = aux.hijoDerecho;

}

while(aux != null){

if(aux.traePrioridad()

r = aux;

}

aux = aux.hijoIzquierdo;

}

if(r.hijoIzquierdo != null){

r.hijoIzquierdo.hijoDerecho = null;

r.hijoIzquierdo = lista2Arbol(r.hijoIzquierdo);

}

if(r.hijoDerecho != null){

r.hijoDerecho.hijoIzquierdo = null;

r.hijoDerecho = lista2Arbol(r.hijoDerecho);

}

return r;

}

private void recorridoPreOrden(NodoArbol p){

if(p != null){

p.escribe();

recorridoPreOrden(p.hijoIzquierdo);

recorridoPreOrden(p.hijoDerecho);

}

}

private void recorridoPosOrden(NodoArbol p){

if(p != null){

recorridoPosOrden(p.hijoIzquierdo);

recorridoPosOrden(p.hijoDerecho);

p.escribe();

}

}

private void recorridoInOrden(NodoArbol p){

if(p != null){

recorridoInOrden(p.hijoIzquierdo);

p.escribe();

recorridoInOrden(p.hijoDerecho);

}

}

private void trabaja(String []args){

NodoArbol nuevo;

int prio = 0;

if(args.length>0 && args.length%2 != 0){

for(int i=0;i

if(args[i].charAt(0) == '('){

prio += 10;

}else if(args[i].charAt(0) == ')'){

prio -= 10;

}/*else{

nuevo = new NodoArbol(args[i],prioridad(args[i].charAt(0))+prio);

raiz = creaLista2(raiz, nuevo);

}*/

}

raiz = lista2Arbol(raiz);

recorridoInOrden(raiz);

System.out.println();

recorridoPreOrden(raiz);

System.out.println();

recorridoPosOrden(raiz);

System.out.println();

}

}

public static void main(String []args){

Arbol miArbol = new Arbol();

miArbol.trabaja(args);

}

}

En UML para indicar si una característica o un método va a tener el nivel de encapsulamiento público se utiliza un signo + por ejemplo:

...

Descargar como (para miembros actualizados)  txt (27 Kb)   pdf (129 Kb)   docx (30 Kb)  
Leer 14 páginas más »
Disponible sólo en Clubensayos.com