Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: tu en 02 de Abril 2015, 03:13

Título: Listas doblemente encadenadas Java
Publicado por: tu en 02 de Abril 2015, 03:13
Hola le agradeceria mucho una explicacion contundente de estos temas pero en Java es para una exposicion urgente

TEMAS: LISTAS

4. Listas doblemente encadenadas
4.1. Inserción de un dato en una lista doblemente encadenada después de un nodo dado
4.2. Retiro de un nodo de una lista doblemente encadenada
4.3. Listas circulares doblemente encadenadas
4.4. Liberación de los nodos de una lista circula doblemente encadenada
4.5. Creación de una lista circular doblemente encadenada
4.6. Copia de una lista p en una lista q
4.7. Suma de dos números muy grandes
4.8. Impresión de una lista recursivamente

y con este ejercicio si me lo pueden explicar que tengo que hacer ya que no tengo claro el tema

EJERCICIOS PARA DESARROLLAR: LISTAS

Elaborar una función que reciba dos listas circulares doblemente encadenadas que contienen dos números muy grandes y devuelva la multiplicación entre ellos. Suponga que los números son mayores o iguales a 0.

GRACIASSSSS!!
Título: Re:JAVA LISTAS DOBLEMENTE ENCADENADAS
Publicado por: Ogramar en 02 de Abril 2015, 13:55
Hola, la cuestión planteada es muy amplia y muy compleja como para poder resolverla en un foro. Podríamos intentar responder alguna cuestión concreta pero lo planteado es demasiado amplio.

Referencia de cómo se codifica una lista doblemente enlazada en java (esto habría que trabajarlo para adaptarlo):

Nodo principal

Código: [Seleccionar]
public class NodoDoble {
            private Integer dato;
            private NodoDoble siguiente;
    private NodoDoble anterior;
}

Método Insertar inicio

           
Código: [Seleccionar]
public void insertarInicio(Integer d){
            NodoDoble nuevo = new NodoDoble(d);
            if(inicio==null){
            inicio=nuevo;
            }else{
            nuevo.setSiguiente(inicio);
            inicio.setAnterior(nuevo);
            inicio=nuevo;
            }
            }
           

  Método Insertar final

           
Código: [Seleccionar]
public void insertarFinal(Integer d){
            NodoDoble nuevo = new NodoDoble(d);
            if(inicio == null){
            inicio = nuevo;
            }else{
            NodoDoble aux = inicio;
            while(aux.getSiguiente() != null){
            aux = aux.getSiguiente();
           
            }
            aux.setSiguiente(nuevo);
            nuevo.setAnterior(aux);

            }
           
            }
           

Metodo Eliminar

Código: [Seleccionar]
public void eliminaValor(Integer valor){
                        if (inicio != null){
                                   NodoDoble aux = inicio;
                                   NodoDoble ant = null;
                                   while (aux != null){
                                               if (aux.getDato() == valor ){
                                                           if (ant == null){
                                                                       inicio = inicio.getSiguiente();
                                                                       aux.setSiguiente(null);
                                                                       aux= inicio;
                                                         
                                                           }else {
                                                                       ant.setSiguiente(aux.getSiguiente());
                                                                       aux.setSiguiente(null);
                                                                       aux = ant.getSiguiente();
                                                           }                                             
                                                           }else{
                                                                       ant = aux;
                                                                       aux = aux.getSiguiente();
                                                           }
                                               }
                                   }
                                 
                        }
           
            Método buscar

           
Código: [Seleccionar]
public void buscar(Integer valor){
                        if (inicio != null){
                                   NodoDoble aux = inicio;
                                 
                                   int cont = 0;
                                   while (aux != null){
                                               if (aux.getDato() == valor ){
                                                           cont++;
                                                           aux = aux.getSiguiente();
                                                         
                                               }                                 
                                   }                     
                             }
                        }

Salu2