ESTE ES LA TAREA DE PROGRAMACION JAVA DE MENU DE LISTAS LIGADAS DOBLES ESTOS SON LOS TRES ARCHIVOS QUE TIENEN QUE TENER:
EL 1° ARCHIVO SE LLAMARA NODOLISTAD ESTE ARCHIVO CONTIENE LOS CONSTRUCTORES DE LOS NODOS Y ASI QUEDATA EL PROGRAMA:
///////////////GENERA NODOS PARA LISTAS DOBLES////////////////////
class NodoListaD{
////3 campos
Object info;
NodoListaD Izq;/////////////asi se declara para apuntar a un dato igual a ellos
NodoListaD Der;
/////////////primer constructor/*/////////////////
public NodoListaD(Object Dato){
this.info = Dato;
this.Izq = null;
this.Der = null;
}
/////////////////segundo constructor///////////////
public NodoListaD(NodoListaD Izq, Object Dato){
this.Izq = Izq;
this.info = Dato;
this.Der = null;
}
//////////////////tercer constructor//////////////
public NodoListaD(Object Dato, NodoListaD Der){
this.Izq = null;
this.info = Dato;
this.Der = Der;
}
//////////////////cuarto constructor////////////////
public NodoListaD(NodoListaD Izq, Object Dato, NodoListaD Der){
this.Izq = Izq;
this.info = Dato;
this.Der = Der;
}
}
EL 2° ARCHIVO SE LLAMARA LISTAD ESTE ARCHIVO SON LAS FUNCIONES QUE CREARAN LOS NODOS CON LOS DIFERENTES CONSTRUCTORES:
///////////////////////////LISTA QUE MANIPULA A LOS PUNTEROSY METODOS /////////////
class ListaD{
//////PUNTEROS
public NodoListaD Primero,Ultimo,Nuevo,Aux,Pos,Ant;
//////constructor
public ListaD(){
Primero = Ultimo = Nuevo = Aux = Pos = Ant = null;
}
////////////////////////INSERTAR AL FRENTE//////////
public void insertarAlFrente(Object dato){
if(Primero==null){//////////1 caso(lista vacia)
Primero = new NodoListaD(dato);
Ultimo = Primero;
}
else{
Nuevo = new NodoListaD(Ultimo, dato);
Ultimo.Der = Nuevo;
Ultimo = Nuevo;
}despliegaLista();
}
////////////////INSERTAR ATRAS//////////////
public void insertarAtras(Object dato){
if(Primero==null){
Primero = new NodoListaD(dato);
Ultimo = Primero;
}
else {
Nuevo = new NodoListaD(dato,Primero);
Primero.Izq=Nuevo;
Primero = Nuevo;
}despliegaLista();
}
/////////INSERTAR ANTES DE //////////
public void insertarAntesDe(Object DatoB,Object DatoI){
if(Primero==null){
System.out.println ("lista vacia");
}
else{/////hay datos
if(buscar(DatoB)== true){
///////EMPEZAR A REALIZAR EL METODO
if(Aux==Primero){///caso 1
Nuevo= new NodoListaD(DatoI,Primero);
Primero.Izq = Nuevo;
Primero=Nuevo;
}
else{//en caso de que no este al inicio de la lista
Nuevo = new NodoListaD(Ant,DatoI , Aux);
Aux.Izq = Nuevo;
Ant.Der=Nuevo;
}
}
}
despliegaLista();
}
////////////////INSERTAR DESPUES DE///////////////
public void insertarDespuesDe(Object DatoB, Object DatoI){
if(Primero==null){
System.out.println ("lista vacia");
}
else{///hay metodos
if(buscar(DatoB)== true){
//////EMPEZAR A REALIZAR EL METODO/////
if(Aux==Ultimo){
Nuevo=new NodoListaD(Aux,DatoI);
Aux.Der=Nuevo;
Ultimo=Nuevo;
}
else{///en caso de que no este al inicio de la lista
Nuevo= new NodoListaD(Aux,DatoI,Aux.Der);
Aux.Der = Nuevo;
Pos = Aux.Der;
Pos.Izq =Aux.Der;
}
}
}despliegaLista();
}
///////////////METODO ELIMINAR NODO//////////////
public void eliminarNodo(Object DatoB){
if(Primero==null){
System.out.println ("lista vacia");
}
else{
if(buscar(DatoB)==true){///hacer cuatro casos
if(Primero==Ultimo){//// 1 caso
Primero=Ultimo=null;
}
else if(Aux==Primero){//2caso
Primero=Aux.Der;
Primero.Izq=Aux=null;
}
else if(Aux==Ultimo){//3 caso
Ultimo=Ant;
Ultimo.Der=Aux=null;
}
else{//4 caso
Ant.Der=Pos;
Pos.Izq=Ant;
Aux=null;
}
}
}despliegaLista();
}
/////////////METODO PARA SUSTITUIR DATO///////////////
public void modificaLista(Object DatoB,Object DatoI){
if(Primero==null){
System.out.println ("lista vacia");
}
else{
if(buscar(DatoB)==true){
Aux.info=DatoI;
}
}despliegaLista();
}
//////////////////////////METODO BUSCAR/////////
public boolean buscar(Object DatoB){
Aux = Primero;
boolean bandera = false;
while (Aux != null && bandera != true) {
if(DatoB.equals(Aux.info)){// si encuentra el dato //la funcion .equals sirve para comparar el contenido de una direccion de memoria
bandera = true;
}
else{//apunta al siguiente nodo
Ant = Aux;
Aux = Aux.Der;
Pos = Aux.Der;
}
}
if(bandera == true){
return true;
}
else{
System.out.println ("ese dato no existe");
return false;
}
}
////////////////////DESPLEGAR LISTA DOBLE////////////////
public void despliegaLista(){
Aux = Primero;
System.out.println ("######### LISTA COMPLETA ###########");
while (Aux != null) {
System.out.println (Aux.info);
Aux = Aux.Der;
}
System.out.println ("########################################");
}
}
EL 3° ARCHIVO SE LLAMARA APPLISTAD ESTE ES EL MENU DE DONDE SE EJECUTARAN LAS FUNCIONES:
import java.util.Scanner;
class AppListaD{
public static void main(String args[]){
ListaD lista = new ListaD();
Integer DatoB,DatoI;
int opcion;
//Inicializacion del teclado
Scanner Teclado = new Scanner(System.in);
do{
System.out.println ("1) Insertar al frente");
System.out.println ("2) Insertar al Atras");
System.out.println ("3) Insertar Antes de");
System.out.println ("4) Insertar Despues de");
System.out.println ("5) Eliminar Dato");
System.out.println ("6) Modificar Dato");
System.out.println ("7) DesplegarLista");
System.out.println ("8) Salir");
opcion = Teclado.nextInt();
switch (opcion) {
case 1: System.out.println ("Que dato quieres insertar al frente de la Lista: ");
DatoI = new Integer(Teclado.nextInt());
lista.insertarAlFrente(DatoI);
break;
case 2: System.out.println ("Que dato quieres insertar Atras de la Lista: ");
DatoI = new Integer(Teclado.nextInt());
lista.insertarAtras(DatoI);
break;
case 3: System.out.println ("Que dato quieres insertar Antes de la Lista: ");
DatoI = new Integer(Teclado.nextInt());
System.out.println ("Atras de que dato quieres insertar el :"+DatoI);
DatoB = new Integer(Teclado.nextInt());
lista.insertarAntesDe(DatoB,DatoI);
break;
case 4: System.out.println ("Que dato quieres insertar Despues de la Lista: ");
DatoI = new Integer(Teclado.nextInt());
System.out.println ("Despues de que dato quieres insertar el :"+DatoI);
DatoB = new Integer(Teclado.nextInt());
lista.insertarDespuesDe(DatoB,DatoI);
break;
case 5: System.out.println ("Que dato quieres ELiminar de la Lista: ");
DatoB = new Integer(Teclado.nextInt());
lista.eliminarNodo(DatoB);
break;
case 6: System.out.println ("Que dato quieres buscar para sustituir: ");
DatoB = new Integer(Teclado.nextInt());
System.out.println ("Que dato quieres poner en el numero "+DatoB+":");
DatoI = new Integer(Teclado.nextInt());
lista.modificaLista(DatoB,DatoI);
break;
case 7: lista.despliegaLista();
break;
case 8: System.out.println ("\tbye...\n");
break;
default :System.out.println ("\topcion no valida intenta de nuevo\n");
}
}while (opcion != 8);
}
}
BUENO AMIGOS COMENTEN PARA DECIR QUE LES PARESE ACEPTO NEGATIVAS, INSULTOS Y DEMAS AUNQUE LOS BORRARE PERO USTEDES COMENTEN HAHAHAHA AUNQUE SEA PARA AGRADECER......
El éxito sólo se logra rompiéndote la madre,de otra manera serías un suertudo no una persona exitosa, Tener éxito en la vida no es llegar a tener fama,sino a realizar aquello que realmente deseas,Una persona no vale por sus éxitos, sino de las veces que se ha levantado de sus fracasos,Lo difícil no es tener éxito, lo difícil es conservarlo, La mejor venganza es el éxito, La fuerza de tu envidia es la rapidez de mi progreso.
Suscribirse a:
Enviar comentarios (Atom)
TE QUEDO BIEN TODO EL PROGRAMA, A MI TAMBIEN ME QUEDO PARECIDO AL TUYO, CHIDO CUIDATE
ResponderEliminargracias ramon chido y cuidate tu tambien y cuida esa memoria que te la pueden robar ya ves que es de ricos!!!
ResponderEliminaroye amigo una pregunta como se le aria si es que quiero que al ingresar una tecla i o D
ResponderEliminarte muestre el valor anterior o el siguiente
hola al imprimir la lista con un objeto ,la imprime 2 veces
ResponderEliminardonde esta la clase tipo persona?? osea hai hay variable tipo objeto
ResponderEliminar