Documentos de Académico
Documentos de Profesional
Documentos de Cultura
public Aplicacion02(){
c2 = new Cola();
}
public Aplicacion03() {
lis = new LCDE();
}
DESARROLLO N°02
Ejercicio 01: Avanzar y Retroceder LCDE
Clase Aplicación:
System.out.println("Lista LU generada");
lis.mostrar();
System.out.println("...............");
System.out.println("Moviendo la cabezera al valor 0");
lis.cab = lis.cab.sig;
System.out.println(lis.cab.cant);
return lis;
}
public void moverCabezeras(int a){
int dig1, dig2;
dig1 = (a/10);
dig2 = (a - (dig1*10));
System.out.println("Se movera: "+dig1 +" "+dig2);
moverLC(dig1, lu);
System.out.println("Fin primera lista");
moverLC(dig2, ld);
System.out.println("Fin segunda lista");
}
LCDE
public class LCDE1 {
Nodo cab;
public LCDE1(){
cab = null;
}
public void insNodo(Nodo p) {
if (cab != null) {
p.sig = cab.sig;
cab.sig = p;
p.ant = cab;
p.sig.ant = p;
}
cab = p;
}
public Nodo retroceder(Nodo p, int pasos){ // p hace referencia al nodo donde se empezerá el
retroceceso
int n;
n = 0;
while(pasos < n){ // si pasos = 0, entonces no ingresa y sale con la posicion de p
n--;
p = p.ant;
}
return p;
}
LC:
public class LC {
Nodo cab;
public LC(){
cab = null;
}
public void insInicio(Nodo p){
if(cab!=null){
p.sig = cab.sig; // ahora p apuntan al Nodo apunt x cab (ultimo nodo)
//
cab.sig = p; // ahora cab.sig apunta a p, es decir la cabeza en este punto,
// ya no debe apuntar al ultimo nodo, sino que debe apuntar
// al que será la nueva cabezera en este caso el Nodo p;
}
cab = p; // ahora cab apunta a p (entonces p, se vuelve el Nodo inicial = cab)
}
PILA:
COLA:
public class Cola {
Nodo cab;
Nodo ult;
public Cola(){
this.cab = null;
this.ult = null;
}
COLAS DE PRIORIDAD:
Nodo cab;
Nodo ultSargento;
Nodo ultCabo;
Nodo ultSoldado;
Nodo ultimo4;
public ColaPrioridad1() {
cab = null;
ultSargento = null;
ultCabo = null;
ultSoldado = null;
ultimo4 = null;
}
Clase Cabina:
package Ejercicio011;
public class Cabina {
int numero;
Cliente cliente;
int minPedidos;
int minInicial;
int minAcumulados;
boolean estado;
public void asignarCabinaCliente(int minAct, Cliente clien) {// num aleatorio que representa
el tiempo que se le va asignar a la cabina
estado = true;
minInicial = minAct;
minPedidos = clien.getTiempo();
}
Clase Cliente:
package Ejercicio011;
public class Cliente {
int tiempo;
boolean estado;
public Cliente() {
this.estado = false;
this.tiempo = 0;
}
public Aplicacion_1() {
genCerradura(); // incializa la cerradura
}
public LC genLC(int n) {
LC lista;
int i;
Nodo p;
Casilla cas;
lista = new LC();
for (i = 0; i < n; i++) {
cas = new Casilla(i);
p = new Nodo(cas);
lista.insInicio(p);
}
return lista;
}
public String ingresoString(String text){
Scanner scanner;
String dato;
scanner = new Scanner(System.in);
System.out.println(text);
dato = scanner.nextLine();
return dato;
}
Clase Cerradura:
package Ejercicio0311;
Clase Casilla:
package Ejercicio0311;
public class Casilla {
int valor;
boolean estado;
public Casilla(int valor) {
this.valor = valor;
this.estado = false;
}
Clase Casilla:
public class Cliente {
String nombre;
Cerradura cerrd;
public Aplicacion() {
lis = new LCDE();
jugador = new Jugador();
}
Clase Casillero:
public class Casillero {
int valor;
char letra;
Clase Jugador:
public class Jugador {
int puntos;
public Jugador() {
this.puntos = 50;
}
}
//Método para eliminar un Nodo de una LCDE:
public void eliminarNodoLC(Nodo p){
if (p != p.ant) { // verifica que no haya un solo elemento
p.ant.sig = p.sig; //
if (p != p.sig) { // no sea el mismo
p.sig.ant = p.ant;
if (cab == p) {
cab = p.ant;
}
}
p.sig = null;
p.ant = null;
}else{ // significa que hay un solo nodo, por ello la cab = null;
cab = null;
}
}
public Aplicacion(){
pila = new Pila();
}
public static void main(String[] args) {
Aplicacion ap;
int n;
ap = new Aplicacion();
n = ap.ingresarValor(5, 25, "Ingrese el valor de n (5 a 25)");
ap.genPila1(n);
ap.mostrarResultados();
}
public Aplicacion(){
pila = new Pila();
}
public static void main(String[] args) {
Aplicacion ap;
String texto;
ap = new Aplicacion();
texto = ap.solicitarCadena("Ingrese la cadena de texto");
ap.apilarCaracteres(texto);
ap.mostrarCadenaInvertida();
}
public String solicitarCadena(String text){
Scanner scanner;
String dato;
scanner = new Scanner(System.in);
System.out.println(text);
dato = scanner.nextLine();
return dato;
}
public Aplicacion(){
pila = new Pila();
}
}
// 78*67/-48/3*+1-14/+
public String solicitarCadena(String text){
Scanner scanner;
String dato;
scanner = new Scanner(System.in);
System.out.println(text);
dato = scanner.nextLine();
return dato;
}
Clase Ventanilla:
Clase Cliente:
public class Cliente {
boolean atendiendo;
int minAtencion;
int tAtencion;
int hFinalización;
}
Clase LC: agregar:
public void actualizarTiemposVentanillas(Nodo3 pa) {
Nodo3 p;
Ventanilla c;
p = pa.sig;
do {
c = p.ventanilla;
c.actualizarVentanilla();
p = p.sig;
} while (p != pa.sig);
}
Clase Militar:
Clase Tropa:
break;
case 2:
break;
case 3:
break;
}
}
return prom;
}
// numsold = 0; probasoldado = 0;
Clase Ventanilla:
3) Elaborar un método en lenguaje Java que reciba como parámetro un número entero (en base
10) y que retorne dicho número en binario colocado en una cadena de texto. Para ello, se harán
divisiones sucesivas del número entre 2, apilando el residuo de cada división, hasta que el
número sea cero, momento en el cual se comenzará a desapilar los valores de la pila para irlos
concatenando en una cadena de texto que será devuelta por el método.
4) Elaborar un método de la clase Aplicación que reciba como parámetro a un arreglo de colas y
que compare el atributo clave de todas las cabeceras de las colas del arreglo y seleccione aquella
cola cuya cabecera tiene el mayor valor en su atributo clave (búsqueda del máximo); extrayendo
el nodo de dicha cola, el cual será devuelto por el método (considerar que una o varias, o todas
las colas pueden estar vacías).
Cola a;
String codigo;
Nodo p;
double prom;
a = new Cola();
if (r != null) {
recorrerInorden01(r.izq);
codigo = r.cod;
prom = promedio(r);
a.insertar(p);
recorrerInorden01(r.der);
return a;
double prom;
int i;
int sumavalores;
sumavalores = 0;
prom = sumavalores/p.numvalores;
return prom; }
Ejercicio 02:
//Clase ARBOL
if(raiz ==null){
raiz = p;
}else{
crearHijo(p, raiz);
if(p!=null){
if(profundidad(r) == 1){
r.izq = p;
}else{
izq = profundidad(r.izq);
der = profundidad(r.der);
if(izq>der){
crearHijo(r, p.der);
}else{
crearHijo(r, p.izq);
profundidad = 0;
if(p!=null){
izq = profundidad(p.izq);
der = profundidad(p.der);
return profundidad;
Ejercicio 03:
Pila pilaaux;
Nodo p, q;
p = null;
q = pilarecib.pop();
pilaaux.push(q);
if (q.codigo == valor) {
p = q;
while (pilaaux.cab!=null) {
q = pilaaux.pop();
pilarecib.push(q);
return p;}
Ejercicio 04:
LCS lis3;
ult1 = lis1.cab;
prim2 = lis2.cab.sig;
ult1.sig = prim2;
lis2.cab.sig = lis1.cab.sig;
lis3.cab = lis2.cab;
lis1.cab = null;
lis2.cab = null;
return lis3;
}
Elaborar un método en lenguaje Java que reciba como parámetro un número entero y una
LCDE. El método deberá avanzar o retroceder la cabecera de la lista tantas posiciones como lo
indique el entero recibido como parámetro (si es positivo avanza y si es negativo retrocede),
contando la cantidad de vueltas que da sobre la lista y devolviendo dicho valor.
nodo p;
int i, vueltas;
primNodo prim;
prim = lista.cab;
p = lista.cab;
vueltas = 0;
if(n>0){
p = p.sig;
lista.cab = p;
if(p == prim){
vueltas++;
if(n<0){
p = p.ant;
lista.cab = p;
if(p == prim){
vueltas++;
}
}
return vueltas;
--------------------------------------
Se tienen dos listas circulares: ld y lu; ambas listas contienen dígitos del 0 al 9 ubicados en
orden ascendente, declaradas a nivel de la clase aplicación. En el constructor se crean ambas
listas y se insertan en ella todos sus nodos, quedando la cabecera de ambas listas apuntando al
nodo con valor 0. Un método de esta clase recibe como parámetro a un valor entero de dos
dígitos, el cual deberá mover los respectivos punteros cabecera desde su lugar actual (que
puede ser cualquier valor) hasta el nodo que contenga el valor del dígito que le corresponda;
es decir, el dígito de las unidades establecerá la nueva posición para la cabecera de la lista lu y
el dígito de las decenas establecerá el lugar que señalará la cabecera de la lista ld. Se pide
plantear los Atributos de la clase Aplicación y desarrollar el método constructor y el método
que mueve las cabeceras.
metodo que recibe un entero de 2 digitos, mover la cabecera hasta el nodo que contenga el
digito correspondiente, el digito de las unidades es para la lista lu, y el de las decenas para la
lista Id
recoId = ap.ObtDec(n);
recolu = ap.ObtUnid(n);
ap.mRecorrerLu(recolu);
ap.mRecorrerId(recoId);
}
int p;
p = n%10;
return p;
int p, dec;
p = n%10;
dec = (n-p)/10;
return dec;
int i;
Nodo p;
p = lu.cab;
i = 0;
do{
p = p.sig;
i++;
}while(numero != p.num);
lu.cab = p;
}
public void mRecorrerId(int numero){
int i;
Nodo p;
p = Id.cab;
i = 0;
do{
p = p.sig;
i++;
}while(numero != p.num);
Id.cab = p;
-----------------------------------------------------------------
Elaborar un método en lenguaje Java que reciba como parámetro un número entero (en base
10) y que retorne dicho número en binario colocado en una cadena de texto. Para ello, se
harán divisiones sucesivas del número entre 2, apilando el residuo de cada división, hasta que
el número sea cero, momento en el cual se comenzará a desapilar los valores de la pila para
irlos concatenando en una cadena de texto que será devuelta por el método.
Pila pila;
Nodo p;
String respuesta;
resultado = n;
residuo = 0;
respuesta = "";
residuo = resultado % 2;
p = new Nodo(residuo);
pila.push(p);
}while(resultado>=2);
p = new Nodo(resultado);
pila.push(p);
respuesta = ConcatenarString(pila);
return respuesta;
String resultado;
Nodo p;
resultado = "";
while(pila.cab != null){
p = pila.pop();
return resultado;
----------------------------------------------------------------
Elaborar un método de la clase Aplicación que reciba como parámetro a un arreglo de colas y
que compare el atributo clave de todas las cabeceras de las colas del arreglo y seleccione
aquella cola cuya cabecera tiene el mayor valor en su atributo clave (búsqueda del máximo);
extrayendo el nodo de dicha cola, el cual será devuelto por el método (considerar que una o
varias, o todas las colas pueden estar vacías).
int numeroMayor;
nodo NodoMayor;
numeroMayor = obtNumMayor(colas);
return NodoMayor;
Cola p;
Nodo q, nodoMayor;
int mayor;
p = colas.cab;
mayor = p.cab.clave;
while(p != null){
if(mayor<p.cab.clave){
mayor = p.cab.clave;
p = p.sig;
}
return mayor;
Cola p;
Nodo q;
p = colas.cab;
do{
if(p.cab.clave == m){
q = p.extraer();
p = p.sig;
}while(q == null);
return q;
----------------------------
Elaborar un método de la clase Aplicación que reciba como parámetro a un arreglo de colas y
que compare el atributo clave de todas las cabeceras de las colas del arreglo y seleccione
aquella cola cuya cabecera tiene el mayor valor en su atributo clave (búsqueda del máximo);
extrayendo el nodo de dicha cola, el cual será devuelto por el método (considerar que una o
varias, o todas las colas pueden estar vacías).
Cola p;
Nodo q;
i = 0;
numMayor = q.clave;
do{
p = cola[i];
q = p.cab;
i++;
if(numMayor<q.clave){
numMayor = q.clave;
indiceMayor = i;
}while(p != null);
p = cola[indiceMayor];
q = p.extraer();
return q;
-----------------------------------------------------------
Elaborar un método de la clase Aplicación en lenguaje Java que recorra una Lista Circular
Doblemente Enlazada (declarada a nivel de la clase Aplicación con el nombre de lis), evaluando
para cada nodo visitado que tanto dicho nodo como su antecesor y su sucesor tengan en su
atributo cant (de tipo int) el mismo valor (o con una diferencia unitaria); de no ser así, se
sumarán los tres valores y ese resultado se repartirá equitativamente entre los tres nodos
(quedando los tres valores iguales o con una diferencia unitaria). El recorrido terminará
cuando, al dar una vuelta por la lista, no se realicen más repartos entre nodos.
Nodo p;
repartos = true;
p = lis.cab;
while(p != null){
nAnt = p.ant.cant;
nAct = p.cant;
nSig = p.sig.cant;
residuo = sumatoria%3;
if(residuo == 0){
repart = sumatoria / 3;
p.ant.cant = repart;
p.cant = repart;
p.sig.cant = repart;
repart = (sumatoria-1) / 3;
p.ant.cant = repart;
p.cant = repart;
p.sig.cant = repart + 1;
repart = (sumatoria-2) / 3;
p.ant.cant = repart;
p.cant = repart + 1;
p.sig.cant = repart + 1;
}
repartos = true;
p = p.sig;
----------------------------------------------------------------------------
nodos de la lista cuya variable stk estén por debajo del valor de la variable
stkmin
// p es la cabecera de la lista
if(p.sig == null){
nodosStkMin = 0;
}else{
aleatorio = genEntero(10,20);
}else{
nodosStkMin = recAum(p.sig);
}
return nodosStkMin;
----------------------------------------------------------------------------
*/
nodosStkMin++;
/*
----------------------------------------------------------------------------
Clase Bicola:
Nodo inicioCola;
Nodo finalCola;
Bicola(){
inicioCola = null;
finalCola = null;
}
public Nodo extraccionFinal(){
Nodo extraido, p;
if(finalCola == null){
extraido = null;
}else{
extraido = finalCola;
finalCola = finalCola.ant;
if(finalCola == null){
inicioCola = null;
return extraido;
Nodo extraido;
return extraido;
}
public Nodo insercionFinal(Bicola bicola){
Nodo extraido;
return extraido;
Nodo extraido;
return extraido;
----------------------------------------------------------------------------
int res;
res = p.valor;
}else{
return res;
}
Post Orden:
-Procesar nodo
----------------------------------------------------------------------------
Nodo p, respuesta;
Pila pAuxiliar;
p = pila.cab;
do{
if(p.valor == dato){
respuesta = pila.pop();
break;
}else{
pAuxiliar.push(pila.pop());
p = pila.cab;
}While(pila.cab != null);
while(pAuxiliar.cab != null){
pila.push(pAuxiliar.cab);
pAuxiliar.pop();
return respuesta;
----------------------------------------------------------------------------
LCS lis3;
p = lis1.cab;
q = lis2.cab;
lis3.cab = lis2.cab;
lis2.cab = null;
lis3.cab = lis1.cab;
lis1.cab = null;
}else{
cab1 = lis1.cab;
cab2 = lis2.cab;
do{
if(p.sig == lis1.cab){
fin1 = p;
p = p.sig;
}while(p != lis1.cab);
do{
if(q.sig == lis2.cab){
fin2 = q;
q = q.sig;
}while(q != lis2.cab);
fin1.sig = cab2;
fin2.sig = cab1;
lis3.cab = fin2;
lis1.cab = null;
lis2.cab = null;
return lis3;
----------------------------------------------------------------------------
Elaborar un método de la clase Aplicación que reciba como parámetros a una
contenga como código al valor entero recibido como parámetro; para lo cual
deberá desapilar en una pila auxiliar a todos los nodos que estén por encima del
Nodo p, nodoValor;
Pila pAuxiliar;
nodoValor = null;
if(p.valor == entero){
nodoValor = p;
}else{
pAuxiliar.push(p);
while(pAuxiliar.cab != null){
p = pAuxiliar.pop();
pila.push(p);
return nodoValor;