Se USAN para representar y evaluar Expresiones aritmeticas
Son arboles binarios completos, Donde las hojas hijos hijo operandos y El Resto de nodos los Operadores.
Aqui VEMOS Como la pila Contiene 3 Elementos a, b, c.
El ultimo Elemento es colocado en la parte Derecha del nodo y el siguiente en la parte izquierda.
Imagen Cabezera
Arboles Binarios (21-mayo-2015)
Arboles binarios: Árbol Que restringe ONU Máximo Dos Pilas Descendientes por Cada Nodo.
Aplicaciones:
Representación y Evaluación de Expresiones aritméticas, búsqueda y ordenamiento.
Terminología:
Completo: Todos los nodos Tienen 0 o 2 hijos.
Lleno: Todos los Niveles Tienen De El Máximo de nodos (2h - 1 nodos).
Balanceados: Todos los nodos con baño La Diferencia de las alturas del subárbol izquierdo y derecho es 0 y 1.
Degenerado: Todos los nodos Tienen Solo Un hijo EXCEPTO La Hoja.
Implementacion:
Estatica (Arreglos)
Clase pública NodoArbolBin <T> {
Dinamica (Nodos)
'
Aplicaciones:
Representación y Evaluación de Expresiones aritméticas, búsqueda y ordenamiento.
Terminología:
Completo: Todos los nodos Tienen 0 o 2 hijos.
Lleno: Todos los Niveles Tienen De El Máximo de nodos (2h - 1 nodos).
Balanceados: Todos los nodos con baño La Diferencia de las alturas del subárbol izquierdo y derecho es 0 y 1.
Degenerado: Todos los nodos Tienen Solo Un hijo EXCEPTO La Hoja.
Implementacion:
Estatica (Arreglos)
Clase pública NodoArbolBin <T> {
Dato T Privado;
Privada Izq NodoArbolBin;
NodoArbolBin der privada;
NodoArbolBin Pública (T dato, NodoArbolBin izq, der NodoArbolBin) {
This.dato = dato;
This.iq = izq;
This.der = der;
}
___
}
Dinamica (Nodos)
'
Clase pública Principal {
Public static void main (String ... arg) {
NodoArbolBin raiz = null;
raiz = new NodoArbolBin ("A", nuevo NodoArbolBin ("B", null, null), nuevo NodoArbolBin ("C", null, null));
NodoArbolBin P = raiz.getIzq ();
p.setIzq (nueva NodoArbolBin ("D", null, null));
p = raiz.getDer ();
p.setIzq (nueva NodoArbolBin ("E", null, null));
p.setDer (nueva NodoArbolBin ("F", null, null));
Recorre (raiz);
}
Static public void Recorre (NodoArbolBin r) {
Si (r! = Null) {
System.out.println (r.getDato ());
Recorre (r.getIzq ());
Recorre (r.getDer ());
}
}
Arboles (15-mayo-2015)
Arboles: Son estructuras no lineales de tipo jerárquico.
Utilidad:
Aplican cuando se requiere representar estructuras con niveles y se pueda distinguir entre datos con mayor o menor valor.
Aplicaciones:
Organigramas, directorios, arboles geneologicos, etc.
Terminología:
Nodo: Cada elemento del arbol, solo tienen un padre, solo conocen la direccion de sus decendientes.
altura: cantidad de niveles: 3
peso: cantidad de hojas: 7
orden: cantidad de nodos: 10
Implementacion
Estática (Arreglos):
Dinamica (Nodos):
Utilidad:
Aplican cuando se requiere representar estructuras con niveles y se pueda distinguir entre datos con mayor o menor valor.
Aplicaciones:
Organigramas, directorios, arboles geneologicos, etc.
Terminología:
Nodo: Cada elemento del arbol, solo tienen un padre, solo conocen la direccion de sus decendientes.
altura: cantidad de niveles: 3
peso: cantidad de hojas: 7
orden: cantidad de nodos: 10
Implementacion
Estática (Arreglos):
Dinamica (Nodos):
Recursividad (7-Mayo-27512015)
Propiedad de las funciones (Metodos), para autollamarse.
Utilidad: Como alternativa a procesos interativos->(for,while,do.while), muy complejos.
Aplicaciones: Recorrido de estructuras no lineales.
factorial
n!= n*(n-1)!
5! = 5*4! = 120
4! = 4*3! = 24
3! = 3*2! = 6
2! = 2*1! = 2
1! = 1*0! = 1
0! = 1
public static long factorial (int n){
if (n==0){
return 1;
}else{
return n*factorial (n-1);
}
}
Utilidad: Como alternativa a procesos interativos->(for,while,do.while), muy complejos.
Aplicaciones: Recorrido de estructuras no lineales.
Ventajas:
Recursividad
* Reduce codigo
* Simplifica la logica
* Se da en metodos
* Consumo excesivo de memoria (Por cada autollamado se hace una copia del metodo y se guarda en la pila de llamado a subprogramas del sistema operativo).
Iteracion:
* No reduce codigo
* No simplifica, sino que tiene logica compleja
* No necesariamente en metodos con uso de (for,while,do-while)
* Muy bajo consumo de memoria.
Implementacion:
Iterativo:
Public static tipo nombreMetodo(args){
_______
_______
for ( );
_______
_______
while ( );
_______
_______
do while( );
_______
_______
}
Ejemplo:
factorial
5!= 1x2x3x4x5
public static long factorial (int n){
long f=1;
for (int i=1; i<=n; i++){
f*=i;
}
return f;
}
Recursivo:
public static nombreMetodo (arg){
if (condicion para autollamado){
_______
_______
_______
nombre Metodo(arg)
_______
_______
}
Ejemplo:
factorial
n!= n*(n-1)!
5! = 5*4! = 120
4! = 4*3! = 24
3! = 3*2! = 6
2! = 2*1! = 2
1! = 1*0! = 1
0! = 1
public static long factorial (int n){
if (n==0){
return 1;
}else{
return n*factorial (n-1);
}
}
Solucion Parcial #2 (7-mayo-2015)
1) Desarrole una funcion que intercambie los datos de los extremos de una pila (p).
Analisis:
Analisis:
Public static void intercambiarExtremos(Pila p){
Pila q=new Pila( );
Object aux = p.quitar( );
while (! p.vacia( )){
q.poner(q.quitar( ));
}
p.poner(aux);
aux=q.quitar( );
while (! q.vacia( )){
p.poner(q.quitar( ));
}
p.poner(aux);
}
Nota: aqui vemos como solamente cambian los extremos de la pila, notando que la parte del centro que igual.
2) Defina la clase pila en base a la grafica a continuacion
Nota: recuerde que las operaciones de pila son poner(por el fin), quitar(por el fin), cima(consulta fin), y vacia(no elementos).
Public class pilaNodoDoble <T> {
private NodoDoble <T> tope;
public boolean vacia( ) { return tope==null; {
public void poner (T dato) {
if (vacia( )){
tope=new NodoDoble(dato,null,null);
}else{
tope.setSig(new NodoDoble(dato,tope,null));
tope=tope.getSig( );
}
}
public T quitar( ){
T dato==null;
if (! vacia( )){
dato=tope.getDato( );
tope=tope.getAnt( );
if(tope != null){
tope.setSig(null);
}
}else{
System.out.print("Pila Vacia...!!!");
}
}
Implementacion De La Cola (17-abril-2015)
Cola: Se realiza por extremos contrarios.
Operaciones:
* Poner
* Quitar
VERSIÓN ESTATICA. (Arreglo)
VERSION DINAMICA. (Arreglo)
Operaciones:
* Poner
* Quitar
VERSIÓN ESTATICA. (Arreglo)
VERSION DINAMICA. (Arreglo)
Implementacion De La Pila (16-abril-2015)
Pila: Restringe a un Extremo de la Estructura lineal-
Operaciones:
* Poner (Almacenar un dato en la Estructura)
* Quitar (Recuperar el dato y eliminarlo de la Estructura)
cima
vacia
llena
VERSIÓN ESTATICA. (Base Vector)
tope: de control variable
Operaciones:
* Poner (Almacenar un dato en la Estructura)
* Quitar (Recuperar el dato y eliminarlo de la Estructura)
cima
vacia
llena
VERSIÓN ESTATICA. (Base Vector)
tope: de control variable
VERSIÓN DINAMICA. (Listas enlazadas)
Pilas Y Colas (16-abril-2015)
Son reglas Para La restriccion de Operaciones en ESTRUCTURAS lineales Como lo son (Arreglos, Listas enlazadas)
PILA : Se utilizan CUANDO Orden heno inverso.
EE.UU. la forma LIFO (último en el primero en salir), ultimo Elemento almacenado, Primero en Ser Procesado.
COLA : Almacenamiento temporal, MIENTRAS SE Hace un Proceso con la cola.
EE.UU. la forma FIFO (primero en firdt fuera), imprimación Elemento almacenado, Primero en Ser Procesado.
Utilidad
Pila : Realizar Operaciones En Forma invertida, retroceder pendientes En Un Proceso Parr OPERACIONES Completar.
Cola: Cuando Los Recursos de Procesamiento HIJO Menos Que las Demandas de su USO.
Aplicaciones
Pila: SO, Llamado un subprogramas, compiladores, párr evaluation de Expresiones aritméticas.
Cola: Cola de Procesos, cola de impresión, simulación.
Nota: Las Pilas Pecado no podria Existir modular la programacion.
PILA : Se utilizan CUANDO Orden heno inverso.
EE.UU. la forma LIFO (último en el primero en salir), ultimo Elemento almacenado, Primero en Ser Procesado.
COLA : Almacenamiento temporal, MIENTRAS SE Hace un Proceso con la cola.
EE.UU. la forma FIFO (primero en firdt fuera), imprimación Elemento almacenado, Primero en Ser Procesado.
Utilidad
Pila : Realizar Operaciones En Forma invertida, retroceder pendientes En Un Proceso Parr OPERACIONES Completar.
Cola: Cuando Los Recursos de Procesamiento HIJO Menos Que las Demandas de su USO.
Aplicaciones
Pila: SO, Llamado un subprogramas, compiladores, párr evaluation de Expresiones aritméticas.
Cola: Cola de Procesos, cola de impresión, simulación.
Nota: Las Pilas Pecado no podria Existir modular la programacion.
EJERCICIO
- CREAR Una Lista (a) de (n) con Nodos Datos Enteros Que contenga Números Positivos y Negativos pedidos desde el teclado y dividir La Lista en dos Nuevas Listas Una (b) Con Los numeros Positivos y Una (c) Con Los numeros
Real = A;
mientras que (real! = null) {
si (Actual.getDato> = 0) {
si (b == null) {
b = Actual;
Real = Actual.getSig ();
b.setSig (null);
b1 = b;
} Else {
b.getSig (real);
b = b.getsig ();
Real = Actual.getSig ();
b.setSig (null);
} Else {
si (Actual.getDato <0) {
si (c == null)
c = Actual;
Real = Actual.getSig ();
c.setSig (null);
c1 = c;
} Else {
c.getSig (real);
c = c.getSig ();
Real = Actual.getSig ();
c.setSig (null);
}
}
}
}
mientras que (real! = null) {
si (Actual.getDato> = 0) {
si (b == null) {
b = Actual;
Real = Actual.getSig ();
b.setSig (null);
b1 = b;
} Else {
b.getSig (real);
b = b.getsig ();
Real = Actual.getSig ();
b.setSig (null);
} Else {
si (Actual.getDato <0) {
si (c == null)
c = Actual;
Real = Actual.getSig ();
c.setSig (null);
c1 = c;
} Else {
c.getSig (real);
c = c.getSig ();
Real = Actual.getSig ();
c.setSig (null);
}
}
}
}
Suscribirse a:
Entradas (Atom)