lista jednokierunkowa - usuwanie elementów

0

Witam, mam problem z usunięciem pierwszego elementu w liście, pozostałe usuwają się bez problemu, jak mogę to naprawić?
Co do pętli while - zakładamy że zawsze element który chcemy usunąć znajduje się na liście.


class samochod
{
	private String marka_samochodu;
	private samochod next;
	
	public samochod()
	{
		marka_samochodu = null;
		next = null;
	}
	public samochod (String marka_samochodu, samochod next)
	{
		this.marka_samochodu = marka_samochodu;
		this.next = next;
	}
	public samochod pobierz_nastepny()
	{
		return next;
	}
	public void ustaw_nastepny(samochod next)
	{
		this.next = next;
	}
	public String pobierz_marka_samochodu()
	{
		return marka_samochodu;
	}	
}
class lista
{
	private samochod poczatek;
	private samochod koniec;
	
	public lista ()
	{
		poczatek = null;
		koniec= null;
	}
	public boolean czyPusta()
	{
 		return (poczatek == null);
 	}
	
	public void wstaw (String s)
	{
		samochod nowy_samochod = new samochod (s, null);
		if (czyPusta())
		{
			poczatek = nowy_samochod;
		}
		else
		{
			koniec.ustaw_nastepny(nowy_samochod);
		}
		koniec = nowy_samochod;
	}
	public void usun (String s)
	{
		samochod pomoc = poczatek;
		int j=0;
		while (j==0)
		{
			if (pomoc.pobierz_nastepny().pobierz_marka_samochodu().equals(s))
			{
				pomoc.ustaw_nastepny(pomoc.pobierz_nastepny().pobierz_nastepny());
				j=1;
			}
			pomoc = pomoc.pobierz_nastepny();
		}
	}
	public void wyswietl() 
	{
 		samochod pomoc = poczatek;
 		while (pomoc != null) 
 		{
 			System.out.print(pomoc.pobierz_marka_samochodu() + "   ");
 			pomoc = pomoc.pobierz_nastepny();
 		}
 	}
}

class mainn 
{
 	public static void main(String[] args) 
 	{
 		lista lista1 = new lista();
 		lista1.wstaw("Audi");
 		lista1.wstaw("Opel");
 		lista1.wstaw("Mercedes");
 		lista1.wstaw("Fiat");
 		lista1.wstaw("Ford");
 		lista1.wyswietl();
 		System.out.println();
 		//lista1.usun("Audi");
 		lista1.usun("Fiat");
 		lista1.usun("Ford");
 		lista1.wyswietl();
 	}
}

0
public void usun (String s)
{
    samochod poprzedni = null;
    for (samochod pomoc = poczatek; pomoc != null; pomoc = pomoc.pobierz_nastepny())
    {
        if (pomoc.pobierz_marka_samochodu().equals(s))
        {
            if (poprzedni != null)
            {
                poprzedni.ustaw_nastepny(pomoc.pobierz_nastepny());
            }
            else
            {
                poczatek = pomoc.pobierz_nastepny();
            }

            if (koniec == pomoc) koniec = poprzedni;

            break;
        }
        poprzedni = pomoc;
    }
}
0

Działa, dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1