package elte.java2_utikalauz5.osztaly.inner; import java.util.Iterator; import java.util.NoSuchElementException; /** Olyan segédosztályra van szükség, amelynek hozzá kell férnie az osztály privát tagjaihoz. @link.forrásfájl {@docRoot}/../data/osztaly/inner/src Lista2.java @since Java Útikalauz programozóknak 1.1 */ public class Lista2 { private Elem elso; private static class Elem { Object adat; Elem elozo, kovetkezo; Elem (Object adat, Elem elozo, Elem kovetkezo) { this.adat = adat; this.elozo = elozo; this.kovetkezo = kovetkezo; } } private static class Felsorolo implements Iterator { final Lista2 lista; Elem aktualis; Elem torolheto = null; Felsorolo (Lista2 lista) { this.lista = lista; aktualis = lista.elso; } public boolean hasNext () { return aktualis != null; } public Object next () throws NoSuchElementException { if (aktualis != null) { torolheto = aktualis; Object adat = aktualis.adat; aktualis = aktualis.kovetkezo; return adat; } else { throw new NoSuchElementException(); } } public void remove () throws IllegalStateException { if (torolheto != null) { lista.torol(torolheto); torolheto = null; } else { throw new IllegalStateException(); } } } public void beszur (Object adat) { elso = new Elem(adat,null,elso); if (elso.kovetkezo != null) elso.kovetkezo.elozo = elso; } public void torol (Object adat) { Elem elem = keres(adat); if (elem != null) torol(elem); } private void torol (Elem elem) { if (elem == elso) elso = elem.kovetkezo; if (elem.elozo != null) elem.elozo.kovetkezo = elem.kovetkezo; if (elem.kovetkezo != null) elem.kovetkezo.elozo = elem.elozo; } private Elem keres (Object adat) { for (Elem elem = elso; elem != null; elem = elem.kovetkezo) if (elem.adat.equals(adat)) return elem; return null; } public Iterator felsorol () { return new Felsorolo(this); } }