0% encontró este documento útil (0 votos)
15 vistas24 páginas

Laboratorio Nro 2

El documento presenta el código de dos programas. El primer programa implementa una cola dinámica lineal para intercambiar el primer y último elemento de la cola y eliminar el primer número múltiplo de 5. El segundo programa implementa una lista simple dinámica de cadenas para llamar a sus operaciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
15 vistas24 páginas

Laboratorio Nro 2

El documento presenta el código de dos programas. El primer programa implementa una cola dinámica lineal para intercambiar el primer y último elemento de la cola y eliminar el primer número múltiplo de 5. El segundo programa implementa una lista simple dinámica de cadenas para llamar a sus operaciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 24

UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

LABORATORIO NRO 2
NOMBRE COMPLETO: COPA MAMANI LEX EDSON
DOCENTE: M. Sc. ZARA YUJRA CAMA
c
MATERIA: ESTRUCTURA DE DATOS (INF-131)
FECHA DE ENTREGA: 20/07/23

PROGRAMA 17

Aplicación de colas dinámicas lineales

Escribir un programa utilizando colas lineales dinámicas para

- Intercambiar el elemento del frente con el elemento del final de la cola


- Eliminar el primer numero multiplo de 5
MAIN
package programa_17;

/**
*
* @author COSSIO
*/
public class Main {

public static void main(String[] args) {


Cola Q=new Cola();
Q.LlenarCola();
Q.Imprimir();
IntercambiarFrenteFin(Q);
Q.Imprimir();
EliminarPrimerNeg(Q);
Q.Imprimir();
}
static void IntercambiarFrenteFin(Cola a){
int x,y,m,i;
System.out.println("intercmabiando el frente con el final");
x=a.Eliminar();
m=a.Contar();
i=1;
while(i<m){
y=a.Eliminar();
a.Insertar(y);
i++;
}
a.Insertar(x);
}
static void EliminarPrimerNeg(Cola Q){
int x,m,i=1;
boolean sw=true;
m=Q.Contar();
System.out.println("ELIMINANDO EL PRIMER NEGATIVO");
while(i<=m&&sw){
x=Q.Eliminar();
if(x>=0){
Q.Insertar(x);
}else{
sw=false;}
i++;
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

}
while(i<=m){
Q.Insertar(Q.Eliminar());
i++;
}
}

}
//COLA
package programa_17;

import java.util.Scanner;

/**
*
* @author COSSIO
*/
public class Cola {
class Nodo{
int info;
Nodo DirSgte;
}
Nodo Frente,Fin;
Scanner sc=new Scanner(System.in);
Cola(){
Frente=null;
Fin=null;
}
public boolean esVacia(){
return Frente==null;
}
public void Insertar(int elem){
Nodo Q=new Nodo();
Q.info=elem;
Q.DirSgte=null;
if(esVacia()){
Frente=Q;
Fin=Q;
}else{
Fin.DirSgte=Q;
Fin=Q;
}
}
public int Eliminar(){
int elem;
Nodo Q;
if(!esVacia()){
elem=Frente.info;
if(Frente==Fin){
Frente=null;
Fin=null;
}else{
Q=Frente;
Frente=Frente.DirSgte;
Q=null;
}
return elem;
}else{
return Integer.MAX_VALUE;
}
}
public int Contar(){
int c=0;
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

Nodo Q=Frente;
while(Q!=null){
c++;
Q=Q.DirSgte;
}
return c;
}
public void Imprimir(){
Nodo Q=Frente;
System.out.println("Listado de todo los elementos de la cola");
while(Q!=null){
System.out.print(Q.info+" ");
Q=Q.DirSgte;
}
System.out.println();
}
public void LlenarCola(){
System.out.println("Cuantos elementos desea insertar a la cola");
int N=sc.nextInt();
int elem;
for (int i = 0; i < N; i++) {
System.out.println("Ingrese un elemento");
elem=sc.nextInt();
Insertar(elem);
}
}

}
EJECUCION

PROGRAMA 18

A continuación realizamos la implementacion del programa completo de listas simples para


datos de tipo String en java

Escribir una aplicación para llamar a todas las operaciones con listas
package programa_18;
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

/**
*
* @author COSSIO
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Listalineal A;
A=new Listalineal();
A.llenarLista();
A.recorrido();
if(A.busca("maria")){
System.out.println("elemento encontrado");
}else{
System.out.println("elemento no encontrado");
}
System.out.println("Eliminando un elemento del final de la lista");
A.eliminaFinal();
A.recorrido();
A.eliminaInicio();
System.out.println("Eliminando un elemento del inicio de la lista");
A.recorrido();

}
package programa_18;

import java.util.Scanner;
public class Listalineal {
private nodo p=null;
Scanner sc=new Scanner(System.in);
class nodo{
private String info;
private nodo dirsgte;
}
void insertarInicio(String elem){
nodo q=new nodo();
q.info=elem;
q.dirsgte=p;
p=q;
}
void insertarFinal(String elem){
nodo q=new nodo();
nodo t=p;
q.info=elem;
q.dirsgte=null;
if(p==null){
p=q;
}else{
while(t.dirsgte!=null){
t=t.dirsgte;
}
t.dirsgte=q;
}
}
void recorrido(){
System.out.println("RECORRIDO DE LA LISTA");
nodo q=p;
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

while(q!=null){
System.out.println(q.info+" ");
q=q.dirsgte;
}
}
boolean vacia(){
return p==null;
}
String eliminaInicio(){
String elem;
nodo q=p;
p=p.dirsgte;
elem=p.info;
q=null;
return elem;
}
String eliminaFinal(){
nodo q=p;
String elem="";
if(p.dirsgte==null){
elem=p.info;
p=null;
}else{
nodo t=p;
while(q.dirsgte!=null){
t=q;
q=q.dirsgte;
}
t.dirsgte=null;
elem=q.info;
q=null;
}
return elem;
}
boolean busca(String e){
nodo Q;
Q=p;
boolean sw=false;
while(Q!=null&&sw==false){
if(Q.info.equals(e)){
sw=true;
}
Q=Q.dirsgte;
}
return sw;
}
public void llenarLista(){
int N;
String elem;
System.out.println("Cuantos elementos desea ingresar a la lista");
N=sc.nextInt();
for (int i = 0; i < N; i++) {
System.out.println("Ingrese elemento");
elem=sc.next();
insertarFinal(elem);
}
}

}
EJECUCION
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

PROGRAMA 19

La aplicación para llenar una lista L y luego realizar el recorrido de la lista circular, para luego
eliminar un elemento es el siguiente
package programa_19;

/**
*
* @author COSSIO
*/
public class AppListaSimpleCircular {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ListaCircularSimple L=new ListaCircularSimple();
L.llenarLista();
L.recorrido();
System.out.println("ELIMINANDO UN ELEMENTO DE LA LISTA");
L.eliminar();
L.recorrido();
}

}
package programa_19;

import java.util.Scanner;

/**
*
* @author COSSIO
*/
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

public class ListaCircularSimple {


private nodo p=null;
Scanner sc=new Scanner(System.in);
private class nodo{
private String info;
private nodo dirsgte;
}
void insertar(String elem){
nodo q=new nodo();
q.info=elem;
if(p==null){
q.dirsgte=q;
p=q;
}else{
q.dirsgte=p.dirsgte;
p.dirsgte=q;
}
}
void recorrido(){
System.out.println();
nodo q=p;
while(q.dirsgte!=p){
System.out.println(q.info+" ");
q=q.dirsgte;
}
System.out.println(q.info);
}
boolean vacia(){
return p==null;
}
String eliminar(){
String elem="";
nodo q=p;
if(p.dirsgte==p){
elem=p.info;
p=null;
}else{
q=q.dirsgte;
elem=q.info;
p.dirsgte=q.dirsgte;
q=null;
}
return elem;
}
boolean buscar(String e){
nodo q;
q=p;
boolean sw=false;
while(q!=p&& sw==false){
if(q.info.equals(e)){
sw=true;
}
q=q.dirsgte;
}
if(q.info.equals(e)){
sw=true;
}
return sw;
}
public void llenarLista(){
int N;
String elem;
System.out.println("Cuantos elementos desea ingrsar a la lista");
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

N=sc.nextInt();
for (int i = 0; i < N; i++) {
System.out.println("Ingrese Elemento ");
elem=sc.next();
insertar(elem);
}
}
}
EJECUCION

PROGRAMA 20

El programa para listas lineales dobles en java, para elementos de tipo cadena es el siguiente

La aplicación para manejo de listas dobles es la siguiente


package programa_20;

/**
*
* @author COSSIO
*/
public class ApplistaDoble {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ListaDoble A;
A=new ListaDoble();
A.llenarLista();
A.recorrido();
A.EliminarInicio();
System.out.println("\n Eliminado un elemento del inicio de la lista");
A.recorrido();

}
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

package programa_20;

import java.util.Scanner;

/**
*
* @author COSSIO
*/
public class ListaDoble {
Scanner sc=new Scanner(System.in);
class Nodo{
Nodo Enlalz;
String info;
Nodo EnlaDer;
}
Nodo p=null;
void InsertarInicio(String elem){
Nodo q;
q=new Nodo();
q.info=elem;
q.Enlalz=null;
if(p==null){
q.EnlaDer=null;
p=q;
}else{
q.EnlaDer=p;
p.Enlalz=q;
p=q;
}
}
void InsertarFinal(String elem){
Nodo T;
Nodo Q=new Nodo();
Q.info=elem;
Q.EnlaDer=null;
if(p==null){
Q.Enlalz=null;
p=Q;
}else{
T=p;
while(T.EnlaDer!=null){
T=T.EnlaDer;
}
T.EnlaDer=Q;
Q.Enlalz=T;
}
}
String EliminarInicio(){
String elem="";
Nodo q=p;
elem=p.info;
if(p.EnlaDer==null){
p=null;
}else{
p=p.EnlaDer;
p.Enlalz=null;
q=null;
}
return elem;
}
void recorrido(){
System.out.println("RECORRIDO DE LA LISTA");
Nodo q=p;
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

while(q!=null){
System.out.print(q.info+" ");
q=q.EnlaDer;
}
System.out.println("");
}
boolean vacia(){
return p==null;
}
public void llenarLista(){
int N;
String elem;
System.out.println("Cuantos elementos desea ingresar a la lista");
N=sc.nextInt();
for (int i = 0; i < N; i++) {
System.out.println("Ingrese elemento ");
elem=sc.next();
InsertarInicio(elem);
}
}

}
EJECUCION

PROGRAMA 21

La aplicación para insertar el nombre de Laura, después del tercer nodo, será el siguiente
package programa_21;

/**
*
* @author COSSIO
*/
public class AppListaLineal {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Listalineal A;
A=new Listalineal();
A.llenarLista();
A.recorrido();
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

System.out.println("INSERTANDO EL NOMBRE DE LAURA DESPUES DEL 3ER NODO");


A.insertaKesimo("Laura",3);
A.recorrido();
}

}
package programa_21;

import java.util.Scanner;

/**
*
* @author COSSIO
*/
public class Listalineal {
private nodo p=null;
Scanner sc=new Scanner(System.in);
class nodo{
private String info;
private nodo dirsgte;
}
void insertarInicio(String elem){
nodo q=new nodo();
q.info=elem;
q.dirsgte=p;
p=q;
}
void insertarFinal(String elem){
nodo q=new nodo();
nodo t=p;
q.info=elem;
q.dirsgte=null;
if(p==null){
p=q;
}else{
while(t.dirsgte!=null){
t=t.dirsgte;
}
t.dirsgte=q;
}
}
void recorrido(){
System.out.println("RECORRIDO DE LA LISTA");
nodo q=p;
while(q!=null){
System.out.println(q.info+" ");
q=q.dirsgte;
}
}
boolean vacia(){
return p==null;
}
String eliminaInicio(){
String elem;
nodo q=p;
p=p.dirsgte;
elem=p.info;
q=null;
return elem;
}
String eliminaFinal(){
nodo q=p;
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

String elem="";
if(p.dirsgte==null){
elem=p.info;
p=null;
}else{
nodo t=p;
while(q.dirsgte!=null){
t=q;
q=q.dirsgte;
}
t.dirsgte=null;
elem=q.info;
q=null;
}
return elem;
}
boolean busca(String e){
nodo Q;
Q=p;
boolean sw=false;
while(Q!=null&&sw==false){
if(Q.info.equals(e)){
sw=true;
}
Q=Q.dirsgte;
}
return sw;
}
public void llenarLista(){
int N;
String elem;
System.out.println("Cuantos elementos desea ingresar a la lista");
N=sc.nextInt();
for (int i = 0; i < N; i++) {
System.out.println("Ingrese elemento");
elem=sc.next();
insertarFinal(elem);
}
}
void insertaKesimo(String e,int k){
nodo q,t;
int c;
q=new nodo();
q.info=e;
t=p;
c=1;
while(t.dirsgte!=null&&c!=k){
t=t.dirsgte;
c++;
}
q.dirsgte=t.dirsgte;
t.dirsgte=q;
}

}
EJECUCION
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

PROGRAMA 22

Codificamos el procedimiento en el programa de listasdobles

Escribimos una aplicaion para llamar a este procedimiento que lleva al final el primer
nodo,como se ve a continuación
package programa_22;

/**
*
* @author COSSIO
*/
public class AppListaDoble {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ListaDoble A;
A=new ListaDoble();
A.llenarLista();
A.recorrido();
A.llevarElprimerAlultimo();
System.out.println("LLEVANDO EL PRIMER NODO AL ULTIMO DE LA LISTA");
A.recorrido();
}

}
package programa_22;

import java.util.Scanner;

/**
*
* @author COSSIO
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

*/
public class ListaDoble {
Scanner sc=new Scanner(System.in);
class Nodo{
Nodo Enlalz;
String info;
Nodo EnlaDer;
}
Nodo p=null;
void InsertarInicio(String elem){
Nodo q;
q=new Nodo();
q.info=elem;
q.Enlalz=null;
if(p==null){
q.EnlaDer=null;
p=q;
}else{
q.EnlaDer=p;
p.Enlalz=q;
p=q;
}
}
void InsertarFinal(String elem){
Nodo T;
Nodo Q=new Nodo();
Q.info=elem;
Q.EnlaDer=null;
if(p==null){
Q.Enlalz=null;
p=Q;
}else{
T=p;
while(T.EnlaDer!=null){
T=T.EnlaDer;
}
T.EnlaDer=Q;
Q.Enlalz=T;
}
}
String EliminarInicio(){
String elem="";
Nodo q=p;
elem=p.info;
if(p.EnlaDer==null){
p=null;
}else{
p=p.EnlaDer;
p.Enlalz=null;
q=null;
}
return elem;
}
void recorrido(){
System.out.println("RECORRIDO DE LA LISTA");
Nodo q=p;
while(q!=null){
System.out.print(q.info+" ");
q=q.EnlaDer;
}
System.out.println("");
}
boolean vacia(){
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

return p==null;
}
public void llenarLista(){
int N;
String elem;
System.out.println("Cuantos elementos desea ingresar a la lista");
N=sc.nextInt();
for (int i = 0; i < N; i++) {
System.out.println("Ingrese elemento ");
elem=sc.next();
InsertarInicio(elem);
}
}
void llevarElprimerAlultimo(){
Nodo q,t;
q=p;
p=p.EnlaDer;
t=p;
while(t.EnlaDer!=null){
t=t.EnlaDer;
}
t.EnlaDer=q;
q.Enlalz=t;
q.EnlaDer=null;
}

}
EJECUCION

PROGRAMA 23

Crear el programa para la aplicación de recursividad AppRecursividad en la misma codificar las


siguiente funciones recursivas

a) Factorial de un numero
b) Multiplicación de dos números naturales
c) Calcular la potencia de un numero
d) Hallar la sumatoria de N términos para 1+1/3+1/5+1/7+…

package programa_23;
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

import java.util.Scanner;

/**
*
* @author COSSIO
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
int opcion,num,num2,R;
int e;
float b,P;
do{
System.out.println("\n\n MENU RECURSIVIDAD \n 1.Factorial \n 2.Potencia \n 3.Multiplicar \n
4.sumatoria de Nterminos 1+1/3+1/5+...");
System.out.println("\n 5.Sumatoria de N terminos 3+6+9+12... \n 6.Salir \n\n Elija su opcion: ");
opcion= sc.nextInt();
switch (opcion) {
case 1:
System.out.println("\n\n Ingrese el numero para obtener su factorial ");
num=sc.nextInt();
R=factorial(num);
System.out.println("El factorial de num es "+R);
break;
case 2:
System.out.println("\n\n Ingrese la Base");
b=sc.nextInt();
System.out.println("Ingrese el exponente ");
e=sc.nextInt();
P=xelevn(b, e);
System.out.println(b+"elevado a "+e+" es "+P);
break;
case 3:
System.out.println("\n\n Ingrese el primer numero ");
num=sc.nextInt();
System.out.println("Ingrese ek segundo numero");
num2=sc.nextInt();
R=multiplicar(num, num2);
System.out.println(" la multiplicacion es "+R);
break;
case 4:
System.out.println("Cuantos terminios desea sumar ");
num=sc.nextInt();
P=sumatoria(num);
System.out.println("la sumatoria de 1 +1/3 + 1/5 +1/7+... es "+P);
break;
default:
System.out.println("fin del programa");
}
}while(opcion!=6);
}
static Scanner sc=new Scanner(System.in);
//funcion facrorial
static int factorial(int n){
if(n==0){
return 1;
}else{
return n*factorial(n-1);
}
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

}
static float xelevn(float base,int exp){
if(exp==0){
return 1;
}else{
return base*xelevn(base, exp-1);
}
}
static int multiplicar(int a,int b){
if(b==0){
return 0;
}else{
return a+multiplicar(a, b-1);
}
}
static float sumatoria(int n){
if (n==1) {
return 1;
}else{
return sumatoria(n-1)+(1/((n*2)-1));
}
}

}
EJECUCION

PROGRAMA 23B
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

Ejercicios hechos en aula primero

a) Suma
b) Producto
c) Potencia
d) Combinatorio
e) Suma vectorial
f) Búsqueda binaria
g) Logaritmo en base 2
h) Logaritmo en base 10
i) Numero binario
j) División
k) Invertimos numero
l) Mínimo común denominador(mcd)
m) Máximo común multiplicador(mcm)

package programa_23B;
/**
*
* @author COSSIO
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("suma de 2+5= "+suma(2,5));
System.out.println("producto de 2*5= "+producto(2, 5));
System.out.println("potencia de 2^9= "+potencia(2,9));
System.out.println("combinatoria de 8C2= "+combinatorio(8, 2));
int vector[]={1,2,3,4,5};
System.out.println("vector 1,2,3,4,5");
System.out.println("suma vectoriar= "+sumaVec(vector, 4));
System.out.println("busqueda binaria en el vector 5 = "+Binario(vector, 5, 2));
System.out.println("busqueda binaria en el vector 5 = "+binarioRecursivo(vector, 0, 4, 2));
System.out.println("logaritmo en base 2 de 4 = "+logaritmo2(4, 2));
System.out.println("logaritmo en base 10 de 100 = "+logaritmo10(100, 10));
System.out.println("numero 32 a binario= "+Nbinario(0));
System.out.println("divide 32/4= "+divide(32, 4));
System.out.println("invierte un numero 34567 = "+invertir(34567, 5));
System.out.println("mcd de 12,18 = "+mcd(12,18));
System.out.println("mcm de 12,18= "+mcm(12,18));
}
public static int suma(int a, int b) {
if (b == 0) {
return a;
} else if (b > 0) {
return suma(a + 1, b - 1);
} else {
return suma(a - 1, b + 1);
}
}
public static int producto(int a,int b){
if(b>1){
return a+producto(a,b-1);
}else{
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

return a;
}
}
public static int potencia(int a,int b){
if(b==0){
return 1;
}else{
return a*potencia(a,b-1);
}
}
public static int combinatorio(int a, int b) {
if (b == 0 || b == a) {
return 1;
} else if (b > a) {
return 0;
} else {
return combinatorio(a - 1, b - 1) + combinatorio(a - 1, b);
}

}
public static int sumaVec(int v[],int n){
if(n==0){
return v[0];
}else{
return v[n]+sumaVec(v,n-1);
}
}
public static int Binario(int v[],int n,int x){
int inf,sup,medio;
inf=0;
sup=n-1;
while(inf<=sup){
medio=(inf+sup)/2;
if(x==v[medio]){
return medio;
}else if(x<v[medio]){
sup=medio-1;
}else{
inf=medio+1;
}
}
return -1;

}
public static int binarioRecursivo(int v[], int inf, int sup, int x) {
if (inf > sup) {
return -1; // El elemento no se encuentra en el arreglo.
}

int medio = (inf + sup) / 2;

if (x == v[medio]) {
return medio; // Elemento encontrado.
} else if (x < v[medio]) {
return binarioRecursivo(v, inf, medio - 1, x); // Buscar en la mitad izquierda.
} else {
return binarioRecursivo(v, medio + 1, sup, x); // Buscar en la mitad derecha.
}
}
public static int logaritmo2(int a, int b) {
if (a <= 1) {
return 0; // Si a <= 1, hemos alcanzado la base del logaritmo y devolvemos 0.
} else {
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

return logaritmo2(a / 2, b) + 1; // Realizamos la división y contamos las llamadas recursivas.


}
}
public static int logaritmo10(int a, int b) {
if (a <= 1) {
return 0; // Si a <= 1, hemos alcanzado la base del logaritmo y devolvemos 0.
} else {
return logaritmo10(a / 10, b) + 1; // Realizamos la división y contamos las llamadas recursivas.
}
}
public static int Nbinario(int a){
if(a==1){
return 1;
}else if(a==0){
return 0;
}else{
return (a%2)+10*Nbinario(a/2);
}
}
public static int divide(int a,int b){
if(a<b){
return 0;
}else{
return divide(a-b,b)+1;
}
}
public static int invertir(int n, int d) {
if (n < 10) {
return n;
} else {
return n % 10 * (int) Math.pow(10, d - 1) + invertir(n / 10, d - 1);
}
}
public static int mcd(int a,int b){
if(b==0){
return a;
}else{
return mcd(b,a%b);
}
}
public static int mcm(int a,int b){
return (a*b)/mcd(a,b);
}

}
EJECUCION
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

PROGRAMA 24

Progrmamos el nodo del árbol binario en java

Luego implementamos la aplicación de arboles binarios


package programa_24;

import javax.swing.JOptionPane;

/**
*
* @author COSSIO
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
arbolNormal arbol=new arbolNormal();
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

int valor;
String Dato;
System.out.println("Insertando los siguientes valores");
Dato=JOptionPane.showInputDialog("insertar el numero de nodos que desea ingresar");
int n=Integer.parseInt(Dato);
for (int i = 1; i < n; i++) {
Dato=JOptionPane.showInputDialog("Dame el "+i+" valor para colocar en el arbol");
valor=Integer.parseInt(Dato);
System.out.println(valor+" ");
arbol.insertar(valor);
}
System.out.println("RECORRIDO PREORDEN");
arbol.recorrido();
System.out.println("RECORRIDO INORDEN");
arbol.recorridoInorden();
System.out.println("RECORRIDO POSORDEN");
arbol.recorridoPosorden();
}

}
package programa_24;
public class arbolNormal {
private nodoArbol raiz;
public arbolNormal(){
raiz=null;
}
public synchronized void insertar(int valorInsertar){
if(raiz==null){
raiz=new nodoArbol(valorInsertar);
}else{
raiz.insertar(valorInsertar);
}
}
public synchronized void recorrido(){
ayudantePreorden(raiz);
}
private void ayudantePreorden(nodoArbol nodo){
if(nodo==null){
return;
}
System.out.println(nodo.datos+" ");
ayudantePreorden(nodo.nodoIzquierdo);
ayudantePreorden(nodo.nodoDerecho);
}
public synchronized void recorridoInorden(){
ayudanteInorden(raiz);
}
private void ayudanteInorden(nodoArbol nodo){
if(nodo==null){
return;
}
ayudanteInorden(nodo.nodoIzquierdo);
System.out.println(nodo.datos+" ");
ayudanteInorden(nodo.nodoDerecho);
}
public synchronized void recorridoPosorden(){
ayudantePosorden(raiz);
}
private void ayudantePosorden(nodoArbol nodo){
if(nodo==null){
return;
}
ayudantePosorden(nodo.nodoIzquierdo);
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

ayudantePosorden(nodo.nodoDerecho);
System.out.println(nodo.datos+"");
}
}
package programa_24;

/**
*
* @author COSSIO
*/
public class nodoArbol {
nodoArbol nodoIzquierdo;
nodoArbol nodoDerecho;
int datos;
public nodoArbol(int datosNodo){
datos=datosNodo;
nodoIzquierdo=nodoDerecho=null;
}
public synchronized void insertar(int valorInsertar){
if(valorInsertar<datos){
if(nodoIzquierdo==null){
nodoIzquierdo=new nodoArbol (valorInsertar);
}else{
nodoIzquierdo.insertar(valorInsertar);
}
}else{
if (valorInsertar>datos) {
if(nodoDerecho==null){
nodoDerecho=new nodoArbol(valorInsertar);
}else{
nodoDerecho.insertar(valorInsertar);
}
}
}
}

}
EJECUCION
UNIVERSIDAD MAYOR DE SAN ANDRES ESTRUCTURA DE DATOS (INF-131)

CARRERA DE INFORMATICA – CURSO DE TEMPORADA M. SC. ZARA YUJRA CAMA

También podría gustarte