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();
					
	}

}