Probabile, ma se non le faccio non ci riuscirò mai una volta fatte, 2-3 volte, dopo non dovrei più avere problemi con queste cose.
quindi, sistemo il codice e lo allego a questo messaggio con un edit
@EDIT:
credo di averlo fatto giusto.
credo.
public Node<E> extract(int index)
{
if(isEmpty())
throw new NoSuchElementException("la pila è vuota");
else if (index == 0)
{
Node<E> tmp = top;
top = top.getLink();
tmp.setLink(null);
return tmp;
}
else if (index < 0)
throw new IndexOutOfBoundsException("non puoi inserire un numero negativo come indice");
else
{
Node<E> prev = top;
while (index-1 > 0)
{
if(prev.getLink() == null && index > 0)
throw new IndexOutOfBoundsException("pila di grandezza inferiore all'indice inserito");
else
{
prev = prev.getLink();
index--;
}
}
Node<E> tmp = prev.getLink();
prev.setLink(prev.getLink().getLink());
tmp.setLink(null);
return tmp;
}
}
ho modificato un attimo anche il delete
public void delete()
{
if(isEmpty())
throw new NoSuchElementException("la pila è vuota");
else
{
Node<E> tmp = top;
top = top.getLink();
tmp.setLink(null);
}
}
prima non gestivo il caso in cui potrei avere un solo nodo
@EDIT2:
onestamente preferisco fare un confronto tra size() e index, per vedere se l'indice inserito è valido o meno.
mi sto incasinando troppo mmh così com'è ora, se metto tipo -3 o 7 (ho 5 nodi), mi lancia l'eccezione a random
@EDIT3:
le modifiche fatte al delete non servivano ahahahaha
@EDIT4:
ok ultimo edit promesso ahahahaha
ho sistemato il codice, lo modifico anche qua, il delete l'ho rimesso come prima e ho sistemato 2 cosette nell'extract at index
tecnicamente potrei fare anche un delete at index, che funziona come l'extract at index, solo che non mi ritorna il nodo. ok lo faccio, tanto è un copia e incolla adattato