lunes, 13 de junio de 2011

Estructuras De Base de Datos





Programas Estructura de Base de Datos.
-> Pila
-> Lista
->Cola
->Arbol
->NodoB (complemento Arbol Binario)
-> ArbolBinaro(Complemento Arbol Binario)
->Clase LEER

----------------- Inicio de Pila-------------------------
//Agrega datos, busca, elimina, actualiza, utiliza BufferReader, no es necesario clase leer

import java.io.*;




public class prueva{

public static BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
public static final int MAX_LENGTH = 5;
public static String Pila[] = new String[MAX_LENGTH];
public static int cima = -1;



public static void main(String args[])throws IOException{


Menu();

}
public static void Menu()throws IOException{

System.out.println("\n\n\t\t\t°°°°°°°°°°Menu°°°°°°°°°°");
System.out.println("\t\t\t= =");
System.out.println("\t\t\t= 1- Insertar =");
System.out.println("\t\t\t= 2- Eliminar =");
System.out.println("\t\t\t= 3- Buscar =");
System.out.println("\t\t\t= 4- Imprimir =");
System.out.println("\t\t\t= 5- Actualizar =");
System.out.println("\t\t\t= 6- Salir =");
System.out.println("\t\t\t°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°");
System.out.print("\t\t\tOpcion: ");
int op = Integer.parseInt(entrada.readLine());

Opciones(op);


}
public static void Opciones(int op)throws IOException
{

switch(op){

case 1: Insertar();
break;
case 2: Eliminar();
break;
case 3: Buscar();
break;
case 4: Imprimir();
break;
case 5: Actualizar();
break;
case 6: System.exit(1);
break;
default:Menu();
break;

}

}
public static void Insertar()throws IOException{


System.out.print("\nIntrodusca un Numero para la pila: ");
String dato = entrada.readLine();
Crear(dato);

}
public static void Crear(String dato)throws IOException{

if ((Pila.length-1)==cima){
System.out.println("Capacidad de la pila al limite\n\n\n");
Imprimir();
}else
{
++cima;
}

Agregar(dato);

}
public static void Agregar(String dato)throws IOException{
Pila[cima]=dato;
Menu();
}
public static void Imprimir()throws IOException{

for(int i=Pila.length-1;i>=0;i--)
{

System.out.println(Pila[i]);

}
Menu();
}
public static void Eliminar()throws IOException{

if(cima== -1){

System.out.println("\n\n\nNo se puede eliminar, pila vacia !!!" );

}else{

Pila[cima] = null;
--cima;

}

Menu();
}
public static void Buscar()throws IOException{

System.out.println("\n\n\nIngrese la cadena a buscar: ");
String cad = entrada.readLine();

for(int i=0;i

if(cad.equals(Pila[i])){

System.out.println("Elemento encontrado,posicion "+i);
break;

}else{
System.out.println("Elemento no encontrado :(");
}
}
Menu();
}
public static void Actualizar()throws IOException{

System.out.print("Digite el nombre del valor que desea actualizar: ");
String actual = entrada.readLine();
System.out.print("Digite el nombre del nuevo valor: ");
String nuevo = entrada.readLine();

for(int i=0;i

if(actual.equals(Pila[i])){

Pila[i]=nuevo;
break;
}else{
System.out.println("Elemento no encontrado :(");
}
}

Menu();
}

}
//Fin del programa Pila
-----------------Fin de Pila-----------------------------
-----------------Inicio de Listas-----------------------

//Inicio del programa Lista *NECESITA LA CLASE LEER* (se adjunta al final de documento)

public class Lista
{
public static void main (String[] args)
{
double[] vectoraux = new double [100];

double[] vectoraux2;

double[] vector;
int conttemp = 0;



double[] vector2 = new double [100];


int resp = 0;
double nb = 0;
do
{
System.out.println (">>>Menu<<<\n");
System.out.println ("1->Insertar");
System.out.println ("2->Remover");
System.out.println ("3->Buscar");
//System.out.println ("4->Ordenar Lista Descendentemente");
System.out.println ("5->Mostrar");
System.out.println ("6->Salir");
resp = Leer.datoInt ();

if (resp == 1)
{
for (int i = 0 ; i < vectoraux.length ; i++)
{
if (vectoraux [i] == 0)
{
System.out.println ("Ingresa numero : ");
vectoraux [i] = Leer.datoFloat ();
break;
}
}

conttemp = 0;
for (int i = 0 ; i < vectoraux.length ; i++)
{
if (vectoraux [i] != 0)
conttemp++;
}
vector = new double [conttemp];

for (int i = 0 ; i < vector.length ; i++)
{
if (vectoraux [i] != 0)
vector [i] = vectoraux [i];
}
}

if (resp == 2)
{

System.out.println ("Ingresa numero a borrar: ");
nb = Leer.datoFloat ();

for (int i = 0 ; i < vectoraux.length ; i++)
{
vectoraux [i] = (int) vectoraux [i];
}

int w = 0;
for (int i = 0 ; i < vectoraux.length - 1 ; i++)
{
if (vectoraux [i] == nb)
{
vectoraux [i] = vectoraux [i + 1];
nb = vectoraux [i + 1];
if (w == 0)
System.out.println ("Elemento eliminado correctamente");
w = 1;
}
}
if (w == 0)
System.out.println ("No se encontro numero");



conttemp = 0;
for (int i = 0 ; i < vectoraux.length ; i++)
{
if (vectoraux [i] != 0)
conttemp++;
}


vector = new double [conttemp];

for (int i = 0 ; i < vector.length ; i++)
{
if (vectoraux [i] != 0)
vector [i] = vectoraux [i];
}



}

if (resp == 3)
{
vector = new double [conttemp];

for (int i = 0 ; i < vector.length ; i++)
{
vector [i] = (int) vectoraux [i];
}

System.out.println ("Numero a buscar: ");
nb = Leer.datoDouble ();
int x = 0;
for (int i = 0 ; i < vector.length ; i++)
{

if (vector [i] == nb)
{
if (x == 0)
System.out.println ("Numero encontrado en la posicion " + i);

if (x > 0)
System.out.println ("Tambien se encontro el mismo numero en la posicion: " + i);
x = 1;

}

}
if (x == 0)
{
System.out.println ("Numero no encontrado");
}

}

/*if (resp == 4)
{

for (int i = 0 ; i < vectoraux.length ; i++)
{
vectoraux [i] = (int) vectoraux [i];
}


for (int i = 0 ; i < 100 ; i++)
{
for (int j = 0 ; j < vectoraux.length - 1 ; j++)
{
if (vectoraux [j] < vectoraux [j + 1])
{
double temp = vectoraux [j];
vectoraux [j] = vectoraux [j + 1];
vectoraux [j + 1] = temp;
}
}
}
conttemp = 0;
for (int i = 0 ; i < vectoraux.length ; i++)
{
if (vectoraux [i] != 0)
conttemp++;
}
vector = new double [conttemp];

for (int i = 0 ; i < vector.length ; i++)
{
if (vectoraux [i] != 0)
vector [i] = vectoraux [i];
}
}*/




if (resp == 5)
{
if (conttemp == 0)
System.out.print ("Lista Vacia");

vector = new double [conttemp];

for (int i = 0 ; i < vector.length ; i++)
{
if (vectoraux [i] != 0)
vector [i] = vectoraux [i];
}





int[] apa = new int [100];


for (int i = 0 ; i < 100 ; i++)
apa [i] = 9999;




double tempj = .000000000001;
for (int i = 0 ; i < conttemp ; i++)
{
for (int j = 0 ; j < conttemp ; j++)
{
if (j > i)
{
if (vector [i] == vector [j])
{
vector [j] = vector [j] + (tempj * (i + 1));
}
}
}
tempj = tempj * 10;
}

double ap[] = new double [vector.length];
for (int i = 0 ; i < vector.length ; i++)
ap [i] = vector [i];



for (int j = 0 ; j < vector.length ; j++)
{
vector2 [j] = vector [j];
}

for (int i = 0 ; i < 1000 ; i++)
{
for (int j = 0 ; j < vector.length ; j++)
{
if (vector2 [j] > vector2 [j + 1])
{
double temp = vector2 [j + 1];
vector2 [j + 1] = vector2 [j];
vector2 [j] = temp;
}
}
}









for (int i = 0 ; i < vector.length ; i++)
{
if (vector [i] != 0)
{
for (int j = 0 ; j < vector.length ; j++)
{

if (i == j)
{
//System.out.print(" [1]");
if (vector [i] == vector2 [vector.length])
{
if (vector [i] != 0)
{
System.out.print ("\nVector[" + i + "]=" + (int) vector [i]);
System.out.print ("-->[/]");
}
}
else
{
for (int a = 0 ; a < vector.length ; a++)
{
if (vector [a] > ap [i])
{
if (apa [i] == 9999) //0
{
apa [i] = a;
}
else
{
if (vector [a] < vector [apa [i]])
{
apa [i] = a;
}
}

}
}

if (vector [apa [i]] != 0)
{
System.out.print ("\nVector[" + i + "]=" + (int) vector [i]);
System.out.print ("-->[" + apa [i] + "]");
double menor = 10000;
for (int x = 0 ; x < vector.length ; x++)
{
if (menor > vector [x])
menor = vector [x];
}
if (menor == vector [i])
System.out.print ("<-----Menor");

}



}
}

}
}
}
}

if (resp == 6)
{
System.exit (69);
}

if (resp != 1 && resp != 2 && resp != 3 && resp != 4 && resp != 5 && resp != 6)
{
System.out.println (">>OPCION INVALIDA<<");
}


System.out.println ("\n");
}

while (resp != 7);


}
}


//Fin del programa Listas *SE NECESITA LA CLASE LEER* (se adjunta al final de documento)

-----------------Fin de Listas---------------------------
-----------------Inicio de Cola--------------------------
//Inicio del programa Cola *NECESITA LA CLASE LEER* (se adjunta al final de documento)
import java.io.*;


public class Cola
{
public static class ClaseCola
{
int max= 5;
int cola[] = new int [max];
int top, acum = 0, acum2 = 1, var = 0;

public ClaseCola ()//constructor de la clase
{
top = 0;
}

public void EliminarDato ()
{
if (top == 0)//Si top vale 0 la cola esta vacia y por lo tanto se sale con break y no hace nada
{
System.out.println ("Cola vacia");
return;
}
for(int i=0;i<4;i++)//Elimina el primer elemento de la cola y pone u cero al final de la cola
{
cola[i]=cola[i+1];
}
cola[4]=0;
top--;
}

public void InsertarDato () throws Exception
{
int dato;
if (top == max)//Si la pila esta llena no inserta el dato
{
System.out.println ("Cola llena");
return;
}
else if (acum2 <= 0)//Si es el primer dato que se va a insertar
{
System.out.print ("Dato a insertar: ");
dato = getInt ();
cola [var] = dato;
var++;
acum2++;
}
else//Si no es el primer dato pero todavia hay espacio libre en la cola
{
System.out.print ("Dato a insertar: ");
dato = getInt ();
cola [top] = dato;//inserta el dato
top++;
}
System.out.println ("Dato insertado");//Mensaje de confirmacion
return;
}
public void MostrarCola ()
{
if (top == 0)//Si top vale 0 no hay datos en la cola pero de todos modods muestra la cola
System.out.println ("Cola Vacia");
for (int i = 0 ; i < max ; i++)//for que muestra la cola
System.out.println ("Cola[" + i + "]=" + cola [i]);
}
}


static ClaseCola Cola = new ClaseCola ();
public static void main (String args[]) throws Exception
{
int op = 0;
do
{
op = 0;
System.out.println( "1.- Mostrar Cola" );
System.out.println( "2.- Insertar" );
System.out.println( "3.- Remover" );
System.out.println( "4.- Fin" );
op = getInt ();
if(op==1)
Cola.MostrarCola ();
if(op==2)
Cola.InsertarDato();
if(op==3)
Cola.EliminarDato ();
if(op==4)
System.exit(0);
}
while (op != 0);
}
public static int getInt () throws IOException
{
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader (isr);
String s = br.readLine ();
return Integer.parseInt (s);
}
}

//Fin del programa Cola *SE NECESITA LA CLASE LEER* (se adjunta al final de documento)
-----------------Fin de Cola-----------------------------
-----------------Inicio de Árbol------------------------
//Inicio del programa Arbol *SE NECESITA LA CLASES NODO B y ARBOLBINARIO * (se adjunta al terminar esta clase)

import java.io.*;

public class ArbolBin
{
NodoB Padre;
NodoB Raiz;
public ArbolBin(){
Raiz = null;
}
public void insertaNodo(int Elem){
if(Raiz == null)
Raiz = new NodoB(Elem);
else
Raiz.insertar(Elem);
}
public void preorden (NodoB Nodo){
if(Nodo == null)
return;
else{
System.out.print (Nodo.dato + " ");
preorden (Nodo.Hizq);
preorden (Nodo.Hder);
}
}
public void postOrden (NodoB Nodo){
if(Nodo == null)
return;
else{
postOrden (Nodo.Hizq);
postOrden (Nodo.Hder);
System.out.print (Nodo.dato + " ");
}
}
public void inorden (NodoB Nodo){
if(Nodo == null)
return;
else{
inorden (Nodo.Hizq);
System.out.print(Nodo.dato + " ");
inorden (Nodo.Hder);
}
}
public int altura (NodoB Nodo){
if (Nodo==null)
return -1;
else
return 1+Math.max(altura(Nodo.Hizq),altura(Nodo.Hder));
}
public int tamaño (NodoB Nodo){
if (Nodo==null)
return 0;
else
return 1+tamaño(Nodo.Hizq)+tamaño(Nodo.Hder);
}
public void buscar (int Elem, NodoB A){
if(A == null | A.dato == Elem){
System.out.print(A.dato + " ");
return;
}
else{
if(Elem>A.dato)
buscar(Elem, A.Hder);
else
buscar( Elem, A.Hizq);
}
}
public static void main (String[]args)throws IOException
{
ArbolBin A = new ArbolBin();//Aki se introcucen los datos, puede agregar mas nodos por si kiere xD
BufferedReader entrada=new BufferedReader(new InputStreamReader(System.in));
int nodo=0,dim=0,cont=0;
System.out.print("Dimencion del arbol : ");
dim=Integer.parseInt(entrada.readLine());
do
{
System.out.print("Ingrese un dato : ");
nodo=Integer.parseInt(entrada.readLine());
A.insertaNodo(nodo);
cont++;
}while(dim>cont);
System.out.print("El recorrido en Preorden es: ");
A.preorden (A.Raiz);
System.out.println();
System.out.print("El recorrido en Inorden es: ");
A.inorden (A.Raiz);
System.out.println();
System.out.print("El recorrido en Postorden es: ");
A.postOrden (A.Raiz);
System.out.println();
System.out.println("La altura del arbol es: " + A.altura (A.Raiz));
System.out.println("La cantidad de \"nodos\" que posee el arbol es: " + A.tamaño(A.Raiz));
}
}
//Fin del Arbol *SE NECESITA LA CLASES NODO B y ARBOLBINARIO * (se adjunta al terminar esta clase)
-----------------Fin de Árbol----------------------------
-----------------Inicio de NODO B---------------------

//Inicio de NODO B *COMPLEMENTO DE LA CLASE ÁRBOL * (se adjunta al terminar esta clase)

public class NodoB
{
int dato;
NodoB Hizq, Hder;
//Constructores
NodoB (int Elem)
{
dato = Elem;
NodoB Hizq, Hder = null;
}
NodoB (){
NodoB Hizq, Hder = null;
}
public void insertar(int Elem){
if(Elem < dato){
if (Hizq == null)
Hizq = new NodoB(Elem);
else
Hizq.insertar(Elem);
}
else{
if (Elem > dato){
if (Hder == null)
Hder = new NodoB(Elem);
else
Hder.insertar(Elem);
}
}
}
}

//Fin del NODO B *SE NECESITAN LAS CLASES ARBOLBIN, NODO B y ARBOLBINARIO * para su funcionamiento( en la misma carpeta)
-----------------Fin de NODO B------------------------
-----------------Inicio de ARBOLBINARIO---------

//Inicio de NODO B *COMPLEMENTO DE LA CLASE ÁRBOL *

import java.io.*;
public class ArbolBinario
{
NodoB Padre;
NodoB Raiz;
public ArbolBinario()
{
Raiz = null;
}
public void insertaNodo(int Elem)
{
if(Raiz == null)
Raiz = new NodoB(Elem);
else
Raiz.insertar(Elem);
}
public int altura (NodoB Nodo)
{
if (Nodo==null)
return -1;
else
return 1+Math.max(altura(Nodo.Hizq),altura(Nodo.Hder));
}
public int tamaño (NodoB Nodo)
{
if (Nodo==null)
return 0;
else
return 1+tamaño(Nodo.Hizq)+tamaño(Nodo.Hder);
}
public static void main (String[]args)throws IOException
{
ArbolBin A = new ArbolBin();//Aki se introcucen los datos, puede agregar mas nodos por si kiere xD
BufferedReader entrada=new BufferedReader(new InputStreamReader(System.in));
int nodo=0,dim=0,cont=0;
System.out.print("Dimencion del arbol : ");
dim=Integer.parseInt(entrada.readLine());
do
{
System.out.print("Ingrese un dato : ");
nodo=Integer.parseInt(entrada.readLine());
A.insertaNodo(nodo);
cont++;
}while(dim>cont);
System.out.println("La altura del arbol es: " + A.altura (A.Raiz));
System.out.println("La cantidad de \"nodos\" que posee el arbol es: " + A.tamaño(A.Raiz));
}
}


//NODO B *SE NECESITAN LAS CLASES ARBOLBIN, NODO B y ARBOLBINARIO * para su funcionamiento( en la misma carpeta)

-----------------Fin de ARBOLBINARIO-------------
-----------------Inicio de LEER-------------------------

//Inicio de NODO B *COMPLEMENTO DE LA CLASE ÁRBOL *


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Leer{
public static String dato()
{
String sdato=" ";
try{
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
sdato=flujoE.readLine();
//caracterSolo = entrada.readLine().charAt(0);
}
catch (IOException e)
{
System.out.println("Error "+e.getMessage());
}
return sdato;
}
public static char datoChar()
{
char dato=' ';

try{
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
dato =flujoE.readLine().charAt(0);
}
catch (IOException e)
{
System.out.println("Error "+e.getMessage());
}
return dato;
}


public static int datoInt()
{
return Integer.parseInt(dato());
}
//De aqui para abajo es la tarea.... Si existe un metodo "parse"
//Para las clases Float,Double, Short y Long.
public static float datoFloat()
{
return Float.parseFloat(dato());
}
public static long datoLong()
{
return Long.parseLong(dato());
}
public static short datoShort()
{
return Short.parseShort(dato());
}
public static double datoDouble()
{
return Double.parseDouble(dato());
}
}
//Fin de clase leer( en la misma carpeta) donde se utilize

-----------------Fin de LEER----------------------------

=Estructura de Base de Datos LINKS de descarga =


=ProgSistem=

-> Download