Mam problem z usuwaniem pierwszego elementu z Listy. Wszystkie pozostałe normalnie się usuwają.
public class Lista {
String atrybut;
Lista nast;
Lista(int n) {
/*
* Wczytuje ze standardowego wejścia n elementów tworząc listę n elementową
*/
if (n > 0) {
Scanner wejscie = new Scanner(System.in);
atrybut = wejscie.next();
nast = new Lista(n-1);
}
}
Lista(String atrybut) {
this.atrybut = atrybut;
this.nast = null;
}
public static void usunElement(Lista l, String atrybut) {
/*
* Usuwa z listy l element o danym atrybucie.
* Jeśli na liście nie ma takiego atrybutu, wtedy nie zmienia listy.
*/
int dlugosc = Lista.dlugoscLista(l);
Lista poprzednik = null;
for (int i=0; i<dlugosc; i++) {
if (l.atrybut.equals(atrybut)) {
if (poprzednik == null) {
l = l.nast
}
else {
l = l.nast;
poprzednik.nast = l;
}
}
else {
poprzednik = l;
l = l.nast;
}
}
}
Gdy wypisuje elementy listy, to jeśli usuwany atrybut nie jest na początku, to wszystko działa, ale gdy jest na początku to nie zostaje usunięty.