Devo realizzare un metodo che inserisca un elemento in posizione pos. L'elemento che era già in posizione pos deve quindi essere spostato di 1 e così tutti quelli successivi.
A prima vista mi sembra corretto, eppure provoca dei risultati strani...penso che saranno i first.next ...
codice:
public void insert(int d, int pos){
if(pos>=0&&pos<=size()){
MiaLista cursore=new MiaLista();
cursore.first=first;
boolean s= insertIntern(d,pos);
}
}
public boolean insertIntern(int d, int pos){
//cont e' dichiarata nella classe MiaLista e inizialmente vale 0
if(first==null)
return false;
else
if(cont==pos){
ListElem nuovoElemento=new ListElem();
nuovoElemento.data=d;
System.out.println("dato:"+d+"in posizione:"+pos);
nuovoElemento.next=first.next;
first.next=nuovoElemento;
cont=0;
return true;
}
else
{
cont++;
System.out.println(first.data);
first=first.next;
return insertIntern(d, pos);
}
}
Prima dell'insert ho questa lista: 5 3 4 3 2
dopo l'insert con parametri (3,3) questa: 3 3 2 ... come se fossero scomparsi il 5 e il 4. Che pasticcio ho fatto?
VVoVe: