Project

General

Profile

Código e Implementación » History » Version 14

« Previous - Version 14/41 (diff) - Next » - Current version
Cesar Jimenez, 09/24/2023 04:04 AM


ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤWikipedia


Grupo A:

Integrantes: Cristian Sánchez, Jean Pier Duran, Sergio Rabanal, Valentina Álvarez, César Jiménez
Nombre del Producto: Machine EV3 G
Modulo: Proyecto I
Docente: Humberto Urrutia
Fecha de Inicio: 2023-08-14
Fecha de Termino: 2023-11-30


ㅤㅤㅤㅤㅤㅤㅤÍndice:

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤInsertar Código del Proyecto

public class Main{
    public static void main(String[] args){
        System.out.println("te sigo queriendo como el primer dia");
        ListaDobleEnlace<Integer> numeros = new ListaDobleEnlace<>();
        numeros.insertar_al_inicio(10);
        numeros.insertar_al_inicio(6);
        numeros.insertar_al_inicio(3);
        numeros.insertar_al_inicio(2);
        numeros.insertar_al_inicio(-1);
        numeros.imprimir();

        System.out.println("\n Tamaño de la Lista: "+numeros.size());

        numeros.insertar_al_final(15);
        numeros.insertar_al_final(20);
        numeros.imprimir();

        System.out.println("\nTamaño de la Lista: "+numeros.size());

        System.out.println("\nContiene el numero: "+numeros.contiene(6));

        System.out.println("\nElemento en la posicion 6 es: "+numeros.obtener_elemento(6));

        numeros.eliminar_en_posicion(5);
        numeros.imprimir();

    }
}

class Nodo<E>{
    E info;
    Nodo<E> sgte;
    Nodo<E> prev;
    public Nodo(Nodo<E> prev,E info,Nodo<E> sgte){
        this.prev = prev;
        this.info = info;
        this.sgte = sgte;
    }
}

class ListaDobleEnlace<E>{
    Nodo<E> cabecera;
    int size = 0;
    public ListaDobleEnlace(){
        this.cabecera = new Nodo<>(null,null,null);
        cabecera.sgte = cabecera;
        cabecera.prev = cabecera;
    }

    public void insertar_al_inicio(E valor){
        Nodo<E> antiguoSiguiente = cabecera.sgte;
        Nodo<E> nuevoNodo = new Nodo<>(cabecera,valor,antiguoSiguiente);
        cabecera.sgte = antiguoSiguiente.prev = nuevoNodo;

        size ++;
    }  

    public void insertar_al_final(E valor){
        Nodo<E> antiguoFinal = cabecera.prev;
        Nodo<E> nuevoNodo = new Nodo<>(antiguoFinal,valor,cabecera);
        cabecera.prev = antiguoFinal.sgte = nuevoNodo;

        size++;
    }

    public void insertar_en_posicion(E valor,int k){
        Nodo<E> temp = cabecera.sgte;
        int cont = 1;
        while(temp != cabecera){
            if(cont == k){
                break;    
            }
            cont++;
            temp = temp.sgte;   
        }
        Nodo<E> nuevoNodo = new Nodo<>(temp.prev,valor,temp);
        temp.prev.sgte = temp.prev = nuevoNodo;
        size++;
    }

    public void eliminar_al_inicio(){
        Nodo<E> temp = cabecera.sgte.sgte;
        cabecera.sgte = temp;
        temp.prev = cabecera;
        size--;
    }

    public void eliminar_al_final(){
        Nodo<E> temp = cabecera.prev.prev;
        cabecera.prev = temp;
        temp.sgte = cabecera;

        size--;
    }

    public void eliminar_en_posicion(int k){
        Nodo<E> temp = cabecera.sgte;
        int cont = 1;
        while(temp != cabecera){
            if (cont == k){
                break;
            }
            temp = temp.sgte;
            cont++;
        }
        temp.prev.sgte = temp.sgte;
        temp.sgte.prev = temp.prev;

        size--;
    }

    public E obtener_elemento(int k){
        Nodo<E> temp = cabecera.sgte;
        int cont = 1;
        while(temp != cabecera){
            if (cont == k){
                return temp.info;
            }
            temp = temp.sgte;
            cont++;
        }
        return null;
    }

    public int buscar(E valor){
        Nodo<E> temp = cabecera.sgte;
        int cont = 1;
        while(temp != cabecera){
            if (temp.info.equals(valor)){
                return cont;
            }
            temp = temp.sgte;
            cont++;
        }
        return -1;
    }

    public void vaciar(){
        cabecera.prev = cabecera.sgte = cabecera;
    }

    public boolean contiene(E valor){
        Nodo<E> temp = cabecera.sgte;
        while(temp != cabecera){
            if (valor == temp.info){
                return true;
            }
            temp = temp.sgte;
        }
        return false;
    }

    public void imprimir(){
        System.out.println("");
        Nodo<E> temp = cabecera.sgte;
        // problema encontrado --> se estaba tomando el valor de null de la cabecera como referencia entonces se metio en un bucle interminable 
        while(temp != cabecera){
            System.out.print(temp.info + " <-> ");
            temp = temp.sgte;
        }

    System.out.print("null");
    }

    public int size(){
        return size;
    }
}

logoPRO.png (91.7 KB) Cesar Jimenez, 09/17/2023 12:15 AM