Bases de datos y estructuras de datos y algoritmos
Resolución de problemas o aplicaciones con programas de software
Modelo Vista Controlador
Conectar a una Base de Datos SQL Server sin plantillas
Estructuras de datos como
Binary Search Tree (BST) y High Binary Left Tree (HBLT)
import java.util.Queue; import java.util.LinkedList; public class BST { private NodoBST raiz; private NodoBST tmp; private NodoBST ant; public BST(NodoBST nuevo){ if(raiz==null){ raiz = nuevo; } } public BST(int arr[]){ for(int i=0; i<arr.length; i++){ insertar(new NodoBST(arr[i])); } } public NodoBST getRaiz(){ return raiz; } public void setRaiz(NodoBST raiz){ this.raiz = raiz; } public void insertar(NodoBST nuevo){ if(raiz==null){ raiz=nuevo; } else{ NodoBST temporal = raiz; while(true){ if(nuevo.getInfo()<temporal.getInfo()){ if(temporal.getPunteroI()!=null){ temporal=temporal.getPunteroI(); } else{ temporal.setPunteroI(nuevo); break; } }else{ if(temporal.getPunteroD()!=null){ temporal=temporal.getPunteroD(); } else{ temporal.setPunteroD(nuevo); break; } } } } } public void recPreOrden(NodoBST raiz){ if(raiz!=null){ System.out.println(raiz.getInfo()); recPreOrden(raiz.getPunteroI()); recPreOrden(raiz.getPunteroD()); } } public void recOrden(NodoBST raiz){ if(raiz!=null){ recOrden(raiz.getPunteroI()); System.out.println(raiz.getInfo()); recOrden(raiz.getPunteroD()); } } public void recPosOrden(NodoBST raiz){ if(raiz!=null){ recPosOrden(raiz.getPunteroI()); recPosOrden(raiz.getPunteroD()); System.out.println(raiz.getInfo()); } } public void recNivel(){ Queue<NodoBST> cola = new LinkedList<NodoBST>(); NodoBST tmp = raiz; cola.offer(tmp); while(!cola.isEmpty()){ tmp = cola.poll(); System.out.println(tmp.getInfo()); if(tmp.getPunteroI()!=null){ cola.offer(tmp.getPunteroI()); } if(tmp.getPunteroD()!=null){ cola.offer(tmp.getPunteroD()); } } } private int grado(NodoBST nodo){ int cont = 0; if(nodo.getPunteroI()!=null){ cont++; } if(nodo.getPunteroD()!=null){ cont++; } return cont; } public NodoBST buscar(int num){ NodoBST tmp = raiz; while(tmp!=null){ if(tmp.getInfo()==num){ return tmp; }else if(num<tmp.getInfo()){ ant = tmp; tmp = tmp.getPunteroI();//busca a la izq } else{ ant = tmp; tmp = tmp.getPunteroD();//busca a la der } } return tmp; } public NodoBST eliminaGrado0(int num){ NodoBST eliminado = buscar(num); if(eliminado==raiz){ raiz = null; }else if(ant.getPunteroI().getInfo()==num){ ant.setPunteroI(null); }else if(ant.getPunteroD().getInfo()==num){ ant.setPunteroD(null); } return eliminado; } public NodoBST eliminaGrado1(int num){ NodoBST eliminado = buscar(num); if(eliminado.getPunteroI()!=null){ tmp = eliminado.getPunteroI(); }else if(eliminado.getPunteroD()!=null){ tmp = eliminado.getPunteroD(); } //tmp = hijo del eliminado if(eliminado==raiz){ raiz = tmp; }else if(ant.getPunteroI().getInfo()==num){ ant.setPunteroI(tmp); }else if(ant.getPunteroD().getInfo()==num){ ant.setPunteroD(tmp); } eliminado.setPunteroI(null); eliminado.setPunteroD(null); return eliminado; } public NodoBST eliminaGrado2(int num){ NodoBST eliminado = buscar(num); tmp = eliminado.getPunteroI(); while(tmp.getPunteroD()!=null){ tmp = tmp.getPunteroD(); } if(eliminado==raiz){ raiz = tmp; }else if(ant.getPunteroI().getInfo()==num){ ant.setPunteroI(tmp); }else if(ant.getPunteroD().getInfo()==num){ ant.setPunteroD(tmp); } if(eliminado.getPunteroI()!=tmp){ tmp.setPunteroI(eliminado.getPunteroI()); } if(eliminado.getPunteroD()!=tmp){ tmp.setPunteroD(eliminado.getPunteroD()); } eliminado.setPunteroI(null); eliminado.setPunteroD(null); return eliminado; } }
import java.util.Queue; import java.util.LinkedList; /** * High Binary Left Tree */ public class HBLT { private Queue<NodoL> cola = new LinkedList<NodoL>(); public HBLT(int [] arr){ for(int num : arr){ NodoL nodo = new NodoL(num); nodo.setS(1); nodo.setPtrI(new NodoL()); nodo.setPtrD(new NodoL()); cola.offer(nodo); } } public NodoL acomodarMayorPrecedencia(){ while(cola.size()>1){ NodoL nodo1 = cola.poll(); NodoL nodo2 = cola.poll(); NodoL nodoAux; if(nodo1.getInfo()<nodo2.getInfo()){ nodoAux = nodo1; nodo1 = nodo2; nodo2 = nodoAux; } if(nodo1.getPtrD().getInfo()==0){ nodo1.setPtrD(nodo2); }else if(nodo1.getPtrD().getInfo()>nodo2.getInfo()){ nodo1.getPtrD().setPtrD(nodo2); }else{ nodoAux = nodo1.getPtrD(); NodoL raiz = nodo1; while(nodo2.getInfo()>nodoAux.getInfo()){ nodo1.setPtrD(nodo2); nodo1 = nodo2; nodo2 = nodo1.getPtrD(); nodo2.setS(); nodo1.setS(); } nodo1.setPtrD(nodoAux); nodoAux.setPtrD(nodo2); nodo2.setS(); nodoAux.setS(); nodo1.setS(); if(nodo1.getPtrI().getS()<nodo1.getPtrD().getS()){ nodoAux = nodo1.getPtrI(); nodo1.setPtrI(nodo1.getPtrD()); nodo1.setPtrD(nodoAux); nodoAux.setS(); } nodo1 = raiz; } if(nodo1.getPtrI().getS()<nodo1.getPtrD().getS()){ nodoAux = nodo1.getPtrI(); nodo1.setPtrI(nodo1.getPtrD()); nodo1.setPtrD(nodoAux); nodoAux.setS(); } nodo2.setS(); nodo1.setS(); cola.offer(nodo1); } return cola.poll(); } public NodoL acomodarMenorPrecedencia(){ while(cola.size()>1){ NodoL nodo1 = cola.poll(); NodoL nodo2 = cola.poll(); NodoL nodoAux; if(nodo1.getInfo()>nodo2.getInfo()){ nodoAux = nodo1; nodo1 = nodo2; nodo2 = nodoAux; } if(nodo1.getPtrD().getInfo()==0){ nodo1.setPtrD(nodo2); }else if(nodo1.getPtrD().getInfo()<nodo2.getInfo()){ nodo1.getPtrD().setPtrD(nodo2); }else{ nodoAux = nodo1.getPtrD(); NodoL raiz = nodo1; while(nodo2.getInfo() != 0 && nodo2.getInfo()<nodoAux.getInfo()){ nodo1.setPtrD(nodo2); nodo1 = nodo2; nodo2 = nodo1.getPtrD(); nodo2.setS(); nodo1.setS(); } nodo1.setPtrD(nodoAux); nodoAux.setPtrD(nodo2); nodo2.setS(); nodoAux.setS(); nodo1.setS(); if(nodo1.getPtrI().getS()<nodo1.getPtrD().getS()){ nodoAux = nodo1.getPtrI(); nodo1.setPtrI(nodo1.getPtrD()); nodo1.setPtrD(nodoAux); nodoAux.setS(); } nodo1 = raiz; } if(nodo1.getPtrI().getS()<nodo1.getPtrD().getS()){ nodoAux = nodo1.getPtrI(); nodo1.setPtrI(nodo1.getPtrD()); nodo1.setPtrD(nodoAux); nodoAux.setS(); } nodo2.setS(); nodo1.setS(); cola.offer(nodo1); } return cola.poll(); } }
Reflexión
Las diferentes estructuras de datos nos proporcionan un orden y un enlace entre todos los datos. Ejemplo más sencillos de estas estructiras son arrays, vectores, matrices; más complejos: Listas enlazadas(simples, dobles, circulares), pilas , colas , árboles binarios, entre otros.
De igual manera una base de datos trabaja con datos relacionados. Através de plantillas utilizamos el MVC en Visual Studio para generar consultas a la base de datos en una vista con texto, botones y etiquetas.
En resumen el MVC se estructura de la siguiente manera:
- El Modelo que contiene una representación de los datos que maneja el sistema, su lógica de negocio, y sus mecanismos de persistencia.
- La Vista, o interfaz de usuario, que compone la información que se envía al cliente y los mecanismos interacción con éste.
- El Controlador, que actúa como intermediario entre el Modelo y la Vista, gestionando el flujo de información entre ellos y las transformaciones para adaptar los datos a las necesidades de cada uno.