Guten Tag,
ich stehe irgendwie auf dem Schlauch und kommen einfach nicht weiter. Und zwar habe ich eine Verkettete Liste. Bei dieser möchte einmal das erste Element der Liste mit dem letzen Element tauschen, sodass das erste Element das letzte Element der Liste wird und das letzte Element das erste Element.
Könntet ihr mit Tipps geben?
Ich habe meinen Code einfach mal unten angehängt.
mit freundlichen Grüßen orcale
	
	
	
	
	
		
	
	
	
	
	
	
		
	
	
	
	
	
	
		
	
	
	
	
	
	
		
	
	
	
	
	
	
		
	
			
			ich stehe irgendwie auf dem Schlauch und kommen einfach nicht weiter. Und zwar habe ich eine Verkettete Liste. Bei dieser möchte einmal das erste Element der Liste mit dem letzen Element tauschen, sodass das erste Element das letzte Element der Liste wird und das letzte Element das erste Element.
Könntet ihr mit Tipps geben?
Ich habe meinen Code einfach mal unten angehängt.
mit freundlichen Grüßen orcale
		Java:
	
	public class VerketteteListe implements Liste {
	private Eintrag kopf; // Anfang
	private Eintrag aktuell; // Zeiger
	public VerketteteListe() {
		kopf = new Eintrag();
		aktuell = kopf;
		aktuell.nf = null;
	}
	@Override
	public boolean istLeer() {
		return (kopf.nf == null);
	}
	@Override
	public void reset() {
		aktuell = kopf;
	}
	@Override
	public boolean istAmEnde() {
		return (aktuell.nf == null);
	}
	@Override
	public void vor() {
		if (!istAmEnde()) {
			aktuell = aktuell.nf;
		}
	}
	@Override
	public Object getElement() {
		if (!istAmEnde()) {
			return aktuell.nf.inhalt;
		}
		return null;
	}
	@Override
	public void einfuegen(Object x) {
		Eintrag temp = new Eintrag();
		temp.inhalt = x;
		temp.nf = aktuell.nf;
		aktuell.nf = temp;
	}
	@Override
	public void loeschen() {
		if (!istAmEnde()) {
			aktuell.nf = aktuell.nf.nf;
		}
	}
	public void zumAnfang() {
		aktuell = kopf;
	}
	public void zumEnde() {
		if (!istLeer()) {
			if (!hatZugriff()) {
				zumAnfang();
			}
			while (aktuell.nf != null) {
				vor();
			}
		}
	}
	public boolean hatZugriff() { // Zeiger befindet sich auf ein Listenelement
		return aktuell != null;
	}
	
	/**
	 * Gibt einen String zurueck mit einer Ansicht der Liste zurueck.
	 */
	public String toString() {
		String r = "";
		int count = 0;
		// an den Anfang springen
		reset();
		// Alle Elemente der Liste durchgehen
		while (!istAmEnde()) {
			r += "Element: " + getElement().toString() + "\n";
			// vorruecken
			vor();
			// Zaehler erhoehen
			count++;
		}
		// Laenge an den Anfang schreiben
		r = "length " + count + "\n" + r;
		return r;
	}
}
		Java:
	
	public class VerketteteListeMain {
	public static void main(String[] args) {
		// ein paar Studentenobjekte erzeugen
		Student s1 = new Student("Willy Wichtig", 123);
		Student s2 = new Student("Susi Sorglos", 89);
		Student s3 = new Student("Max Muster", 112);
		// Neue Liste erstellen, Zugriff ist nur ueber Interfacemethoden moeglich
		Liste l = new VerketteteListe();
		// Einfügen in Liste, so dass sie nach aufsteigender Matrikelnummer sortiert ist:
		// Wir gehen so lange in der Liste weiter vor, wie die Matrikelnummer
		// des Studenten sn groesser als die Matrikelnummer des aktuellen
		// Elements ist. Danach muessen wir einfuegen.
		while (!l.istAmEnde() && s1.matnr > ((Student) l.getElement()).matnr) {
			l.vor();
		}
		
		// s.matnr ist jetzt groesser --> einfuegen
		l.einfuegen(s1);
		
		// nochmal fuer s2
		while (!l.istAmEnde() && s2.matnr > ((Student) l.getElement()).matnr) {
			l.vor();
		}
		l.einfuegen(s2);
		
		// nochmal fuer s3
		while (!l.istAmEnde() && s3.matnr > ((Student) l.getElement()).matnr) {
			l.vor();
		}
		l.einfuegen(s3);
		l.aufgabe1();
		
		// Ansicht der Liste ausgeben --> sortiert?
		System.out.println(l.toString());
	}
}
		Java:
	
	public interface Liste {
	public boolean istLeer();
	public void reset();
	public boolean istAmEnde();
	public void vor();
	public Object getElement();
	public void einfuegen(Object x);
	public void loeschen();
	public void aufgabe1();
}
		Java:
	
	public class Eintrag {
	public Eintrag nf;
	public Object inhalt;
}
		Java:
	
	public class Student {
	public String name;
	public int matnr;
	public Student(String name, int matnr) {
		this.name = name;
		this.matnr = matnr;
	}
	public String toString() {
		return "(Student: name = " + name + "; matnr = " + matnr + ")";
	}
} 
				 
	 
 
		 
 
		 
 
		 
 
		