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 + ")";
}
}