Problem beim Abschluss im Kompositum

phynux

Mitglied
Kann mir jemand einen Anhaltspunkt geben wie ich eine solche Liste mit einem Abschluss vereinfachen kann? Habe leider keine Ahnung wo ich anfangen soll:shock:

Liste:
Java:
public class VerketteteListe {
	private Knoten kopf;
	
	public VerketteteListe() {
	}
	
	public void einfuegen(Datenelement e, int position) {
		if (kopf == null) {
			kopf = new Knoten(e);
		} else {
			if (position == 0) {
				Knoten temp = new Knoten(e);
				temp.hintermannSetzen(kopf);
				kopf = temp;
			} else {
				kopf.einfuegen(e, position - 1);
			}
		}
			
	}
	
	public void entfernen(int position) {
		if (position == 0) {
			if (kopf != null) {
				Datenelement temp = kopf.datumGeben();
				kopf = kopf.hintermannGeben();
			//	System.out.println(temp);
			}
		} else {
			kopf.entfernen(position-1);
		}
		
	}
	
	public int laengeGeben() {
		if (kopf == null)
			return 0;
		return kopf.laengeAbHier();
	}
	
	public void ausgeben() {
		if (kopf != null) {
			kopf.ausgeben();

		}
	}
}

Knoten:
Java:
public class Knoten {
	private Datenelement e;
	private Knoten hintermann;
	
	public Knoten(Datenelement e) {
		this.e = e;
	}
	
	public void hintermannSetzen(Knoten hintermann) {
		this.hintermann = hintermann;
	}
	
	public Datenelement datumGeben() {
		return e;
	}
	
	public Knoten hintermannGeben() {
		return hintermann;
	}
	
	public Datenelement entfernen(int position) {
		if (hintermann == null) {
			return null;
		}
		if (position == 0){
			Datenelement d = hintermann.datumGeben();
			hintermann = hintermann.hintermannGeben();
			return d;
		} else {
			return hintermann.entfernen(position - 1);
		}
	}
	
	
	public void einfuegen(Datenelement e, int position) {
		if (position == 0) {
			Knoten temp = new Knoten(e);
			temp.hintermannSetzen(hintermann);
			hintermann = temp;
		} else {
			if (hintermann != null) {
				einfuegen(e, position - 1);
			} else {
				hintermann = new Knoten(e);
			}
		}
	}
	
	public int laengeAbHier() {
		if (hintermann == null)
			return 1;
		return hintermann.laengeAbHier() + 1;
	}
	
	public void ausgeben() {
		e.ausgeben();
		if (hintermann != null) {
			hintermann.ausgeben();
		}
	}
}
 

Zurück
Oben