Autor Tema: Java programa listas doblemente enlazadas o circulares o simplemente enlazadas  (Leído 2914 veces)

Reijs Manas

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Hola, me gustaría saber qué le hace falta a mi algoritmo de acuerdo con el enunciado

Ejercicio

Crear un programa utilizando listas doblemente enlazadas o circulares o simplemente enlazadas que permita crear objetos (Nodos) del tipo Televisor (de los televisores se conoce: código, marca, pulgadas) y del tipo PC (de los Pc se conoce: código, marca, procesador, memoria ram y disco duro). EL programa presentara un menú que me permita crear e insertar cualquiera de los dos tipos de objetos, también permitirá listarlos según el tipo de objeto.

CLASS PRINCIPAL
Código: [Seleccionar]

import java.util.Scanner;

public class ListaCirular {

    public static void main(String[] args) {

        int ref;
        String marca;
        int pul;
        String opc = null;
        Scanner lea = new Scanner(System.in);
        ListaC listac = new ListaC();
        do {

            System.out.print("Ingresa la referencia del TV: ");
            ref = lea.nextInt();
            System.out.print("Ingresa la marca del TV: ");
            marca = lea.next();
            System.out.print("Ingresa las Pulgadas del TV: ");
            pul = lea.nextInt();

            Televisor tv = new Televisor(ref, marca, pul);
            System.out.println(listac.insertarNodo(tv));

            System.out.print("¿Desea continuar insertando nodos? Si - No: ");
            opc = lea.next();

        }while(!opc.equalsIgnoreCase("no"));
       
        System.out.println("");
        System.out.println("\t\t\tListado de Televisores");
        System.out.println("");
        listac.ImprimirDatos();

    }

}

NODO
Código: [Seleccionar]
public class Nodo {

   
    Televisor dato;

   
    Nodo enlace;

    public Nodo(Televisor dato) {
        this.dato = dato;
        this.enlace = this;
    }

}

CLASS TELEVISORES
Código: [Seleccionar]
public class Televisor {

    private int referencia;
    private String marca;
    private int pulgadas;

    public Televisor() {
    }

    public Televisor(int ref, String marca, int pul) {
        this.referencia = ref;
        this.marca = marca;
        this.pulgadas = pul;
    }

    public int getReferencia() {
        return referencia;
    }

    public void setReferencia(int referencia) {
        this.referencia = referencia;
    }

    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    public int getPulgadas() {
        return pulgadas;
    }

    public void setPulgadas(int pulgadas) {
        this.pulgadas = pulgadas;
    }
   
    public String Mostrar(){
   
        return "(Ref: " + getReferencia() + " Marcar: " + getMarca() + " Pul: " + getPulgadas() + ")";
   
    }
   

}



CLASS LISTAC
Código: [Seleccionar]
public class ListaC {

   
    private Nodo lc;
    private int tamanio = 0;

    public ListaC() {
        lc = null;
    }

    public boolean ValidarLista() {

        return lc == null;

    }

    public String insertarNodo(Televisor tv) {

        Nodo nuevo = new Nodo(tv);
        if (!ValidarLista()) {
            nuevo.enlace = lc.enlace;
            lc.enlace = nuevo;
        }

        lc = nuevo;
        tamanio++;
        return "Nodo insertado";

    }
   
    public void ImprimirDatos(){
   
        Nodo aux;
        if(!ValidarLista()){
       
            aux = lc.enlace;
            do{
                System.out.print(aux.dato.Mostrar() + " --> \n");
                aux = aux.enlace;
            }while(aux != lc.enlace);
        }else{
            System.out.println("La lista no contiene información");
        }
   
    }

}
« Última modificación: 12 de Marzo 2022, 17:40 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Que le hace falta a mi algoritmo de acuerdo con el enunciado?
« Respuesta #1 en: 18 de Octubre 2021, 11:17 »
El tema de "nodos" lo tengo muy verde, así que daré por hecho que la lógica que has usado para crear las listas y los nodos es correcta.

Así que en principio lo único que te falta, es crear la clase PC
Citar
y del tipo PC (de los Pc se conoce: código, marca, procesador, memoria ram y disco duro)
y ofrecer en el menú la posibilidad de elegir entre registrar TV o PC, además de poder listarlos por separado.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Reijs Manas

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re: Que le hace falta a mi algoritmo de acuerdo con el enunciado?
« Respuesta #2 en: 18 de Octubre 2021, 17:00 »
Creo la clase pc y luego como ofrezco el menu?
ejemplo...!

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Que le hace falta a mi algoritmo de acuerdo con el enunciado?
« Respuesta #3 en: 18 de Octubre 2021, 23:38 »
Algo parecido a esto:


Código: [Seleccionar]
do {

            System.out.println("(T) - Ingresar TV);
            System.out.println("(P) - Ingresar PC);
            System.out.print("Elija opción: );
            opc = lea.next();

            if (opc.equals("T") {
                        System.out.print("Ingresa la referencia del TV: ");
                        ref = lea.nextInt();
                        System.out.print("Ingresa la marca del TV: ");
                        marca = lea.next();
                        System.out.print("Ingresa las Pulgadas del TV: ");
                        pul = lea.nextInt();

                        Televisor tv = new Televisor(ref, marca, pul);
                        System.out.println(listac.insertarNodo(tv));
            }
            else {
                        //Pedir datos de PC
                        //Insertar nodo tipo PC
            }

            System.out.print("¿Desea continuar insertando nodos? Si - No: ");
            opc = lea.next();

        }while(!opc.equalsIgnoreCase("no"));
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".