Ciao a tutti, vi pongo il mio problema:
Il mio codice è composto da due classi, quella esterna che definisce la lista concatenata e quella interna che definisce il singolo nodo. Non riesco a fare il metodo cloneRicorsivo(), mi da errore quando cerco di copiare il valore del nodo da clonare in quello clonato.
Qualcuno sa aiutarmi? Grasieeee
codice:
public class ListaConcatenata {
private class ListElem {
private int cargo;
private ListElem next;
public ListElem () {
cargo = 0;
next = null;
}
public ListElem (int cargo) {
this.cargo = cargo;
next = null;
}
public ListElem (int cargo, ListElem next) {
this.cargo = cargo;
this.next = next;
}
public int getCargo () {
return cargo;
}
public ListElem getNext () {
return next;
}
public void setCargo (int cargo) {
this.cargo = cargo;
}
public void setNext (ListElem next) {
this.next = next;
}
public ListElem cloneRicorsivo (ListElem nodo) {
nodo.cargo = cargo;
if (next != null) {
ListElem nuovoNodo = new ListElem();
nodo.setNext(nuovoNodo);
next.cloneRicorsivo(nodo);
}
return nodo;
}
}
private ListElem first;
public ListaConcatenata () {
first = null;
}
public int getFirst () {
return first.getCargo();
}
public ListElem getFirstLE () {
return first;
}
public void setFirst (ListElem primo) {
first = primo;
}
public void insert (int val) {
ListElem nuovo = new ListElem(val);
if (first == null)
first = nuovo;
else {
nuovo.setNext(first);
first = nuovo;
}
}
public ListaConcatenata cloneRicorsivo () {
ListaConcatenata miaListaClone = new ListaConcatenata ();
if (first == null)
return miaListaClone;
else {
first.cloneRicorsivo(miaListaClone.first);
}
return miaListaClone;
}
public void stampa () {
if (first == null)
System.out.print("Lista vuota");
else {
ListElem iterator = first;
while (iterator != null) {
System.out.print(iterator.getCargo() + " ");
iterator = iterator.getNext();
}
}
}
public static void main (String [] args) {
ListaConcatenata miaLista1 = new ListaConcatenata ();
miaLista1.insert(8);
miaLista1.insert(7);
miaLista1.insert(6);
miaLista1.insert(5);
miaLista1.insert(4);
miaLista1.insert(3);
miaLista1.insert(2);
miaLista1.insert(1);
ListaConcatenata clone = miaLista1.cloneRicorsivo();
clone.stampa();
}
}