package elte.java2_utikalauz5.osztaly.inner; import java.util.Iterator; import java.util.NoSuchElementException; /** Nem statikus tagosztály kiterjesztése. @link.forrásfájl {@docRoot}/../data/osztaly/inner/src Lista4.java @since Java Útikalauz programozóknak 1.1 */ public class Lista4 { protected Elem elso; protected static class Elem { Object adat; Elem elozo, kovetkezo; Elem (Object adat, Elem elozo, Elem kovetkezo) { this.adat = adat; this.elozo = elozo; this.kovetkezo = kovetkezo; } } protected class Felsorolo implements Iterator { Elem aktualis = elso; Elem torolheto = null; 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) { 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); } protected 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; } protected 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(); } } class KulsoFelsorolo extends Lista4.Felsorolo { public KulsoFelsorolo (Lista4 lista) { lista.super(); // ... } // ... }