Me pidieron que relazara esta práctica, pero no entiendo cómo puedo hacerla? Ayuda¡¡¡
Gracias por sus respuestas¡¡
Metodología
Para implementar una estructura en memoria dinámica se tomará como base la clase Libro la cual contiene tres atributos: nombre, autor y editorial, el constructor y los métodos set y get que permiten acceder a los atributos.
public class Libro {
private String nombre;
private String autor;
private String editorial;
public Libro(String n, String a, String e ){
nombre=n;
autor=a;
editorial=e;
}
public String getNombre(){
return nombre;
}
public String getAutor(){
return autor;
}
public int getEditorial(){ // a qui me marca error pero si pongo String lo corrije
return editorial;
}
public void setNombre(String n){
nombre=n;
}
public void setAutor(String a){
autor=a;
}
public void seteditorial(String e){ // aqui pone editorial con minuscula Editoria
editorial=e;
}
}
Tomando la clase Libro se construye la clase datos en la cual se utiliza una referencia para enlazar los nodos de la estructura dinámica además del objeto ítem que almacena los datos de libro.
// en este me marca error en el getItem ?¿
public class Datos{
private libro item;
private datos siguiente;
public Datos(Libro x) {
item=x;
siguiente=null;
}
public getItem(){
return item;
}
public Datos getSiguiente(){
return siguiente;
}
public void setSiguiente(Datos y){
siguiente=y;
}
}
Antes de empezar las operaciones se crea una referencia primer de tipo datos que referenciará al primer elemento de la estructura.
datos primer=null; // esto en que clase lo pongo o como lo utilizo?¿?
Las operaciones que se pueden realizar con objetos en memoria dinámica son:
a) Crear un nodo. Para crear un nodo antes se debe crear un objeto del tipo Libro que es uno de los atributos de la clase Datos y el otro atributo que es la referencia se inicializa a null.
Libro l = new Libro(“como programar en Java”, “Deitel”,”Prentice Hall”);
Datos nuevo= new Datos (l,null);
b) Agregar un nodo al inicio. Ya creado el nodo nuevo este se debe enlazar antes del primer nodo, por cual se debe modificar la referencia siguiente con el valor de la referencia primer y la referencia primer toma el valo de nuevo.
public void agregarItemAlInicio(Datos i){
nuevo.setSiguiente(primer);
primer=nuevo;
}
c) Agregar al final. Para realizar esta operación se pueden presentar dos opciones: la primera es que la lista esté vacía y que el nodo nuevo quede como el primero y la segunda es que exista un nodo o varios, en este caso hay que recorrer la lista hasta encontrar un nodo que su referencia siguiente sea null para enlazar con este el nodo nuevo.
public void agregarItemAlFinal(Datos i){
if(primer==null)
primer=i;
else{
Datos aux;
aux=primer;
while(aux.getSiguiente()!=null)
aux=aux.getSiguiente();
aux.setSiguiente(i);
}
}
d) Recorrer la estructura para mostrar el contenido de cada nodo.
public void recorrerLista(){
Datos y=primer;
while(y!=null){
Libro p=y.getItem( );
System.out.println(p.getNombre( ));
System.out.println(p.getAutor( ));
System.out.println(p.getEditorial( ));
y=y.getSiguiente( );
}
}
e) Buscar un nodo.
public void recorrerLista(){
String nomlibro= JOptionPane.showInputDialog("Nombre del libro");
Datos y=primer;
boolean si=false;
while(y!=null && ¡si){
Libro p=y.getItem( );
If (nomlibro.compareTo(p. getNombre() ) ==0){
System.out.println(p.getNombre( ));
System.out.println(p.getAutor( ));
System.out.println(p.getEditorial( ));
si=true;
}
else
y=y.getSiguiente( );
}
}
f) Eliminar el primer nodo.
public Datos eliminaAlInicio(){
Datos aux;
aux=primer;
primer=primer.getSiguiente();
}
El alumno deberá:
1. Construir la clase para manejar datos encadenados con almacenamiento dinámico.
2. Incorporar los métodos para las operaciones descritas.
3. Agregar un método para eliminar un libro dado su nombre.
4. Construir una clase que presente un menú con las operaciones que se realizan.
5. Compilar y ejecutar el programa.
6. Introducir datos de libros por la opción agregar al inicio y mostrarlos. ¿En que orden quedan los datos?
7. Introducir datos de libros por la opción agregar al final y mostrarlos. ¿En que orden quedan los datos?
8. Ejecutar las demás opciones y capture las pantallas de los resultados.
9. Imprimir el código.
ESPERO PUEDAN AYUDARME Y GRACIAS POR SUS RESPUESTAS