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

Estructura de datos ejercicios

Pao AguilarExamen11 de Octubre de 2015

3.670 Palabras (15 Páginas)136 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:

public int contador se debe escribir +Entero contador.

Para privado y protegido se utilizan los signos – y # respectivamente.

4. Para las clases Pila, NodoArbol y todas las clases que se hicieron de tarea, (Carro, vocho, etc) clasifique las características y métodos según sea el caso.

Ejecute los siguientes códigos.

public class ValorPlantilla {

private T valor;

public ValorPlantilla(T v){

valor = v;

}

public T traeValor(){

return valor;

}

}

public class ManejaPlantilla {

public static void main(String []args){

ValorPlantilla valint = new ValorPlantilla (23);

ValorPlantilla valcad = new ValorPlantilla ("Hola Mundo");

System.out.println("El valor es " + valint.traeValor());

System.out.println("El valor es " + valcad.traeValor());

}

}

5. Explique brevemente cómo funciona la idea de . ¿Qué es lo que hace? ¿Cuál es la práctica principal de esta Plantilla?

Bueno en el programa es un tipo genérica q lo q hace es buscar todas las posibles formas de genéricas

Y la plantilla la utilizamos como una librería para q al menejaplantilla se direcciones hacia plantilla y pueda ocupar .

Consulte y haga un resumen de la siguiente página web: http://zarza.usal.es/~fgarcia/docencia/poo/02-03/trabajos/S3T1.pdf 

1.1.¿Qué son tipos genéricos?

Los tipos genéricos, también llamados tipos parametrizados, permiten definir un tipo sin

especificar todos los tipos que éste usa. Estos serán suministrados como parámetros en punto de

instanciación. Los cambios son realizados por tanto en tiempo de compilación.

Los tipos parametrizados se utilizan especialmente para implementar tipos abstractos de

datos: pilas, colas, anillos, bolsas y otros que permiten almacenar distintos tipos de elementos

...

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