Hallo,
habe ein Problem mit Listen. Hier Node Class:
und mein bisheriges Programm:
Die Methode sortiert die erstellte Liste aufwärts. Nun soll ich das kleinste und das größte Element ausgeben. Aber ich weiß nicht genau wie, bzw ob ich eine neue Methode erstellen soll oder in die Methode "sortAuf" integrieren soll. Meine Idee wäre jetzt in der Methode der ersten Index und den letzten Index auszugeben, da die Liste ja sortiert wird. Zusätzlich muss noch eine Methode her, die alle Elemente mit geraden Zahlen löscht und die neue Liste ausgibt, hier habe ich noch keine Idee. Könnte mir jemand helfen? Weiß absolut nicht weiter.
Schon mal Dank im vorraus.
MfG
habe ein Problem mit Listen. Hier Node Class:
Code:
public class Node{
private int value;
private Node next;
public Node(int value, Node nextNode) {
this.value = value;
this.next = nextNode;
}
public int getValue (){
return value;
}
public Node getNext(){
return next;
}
public void setNext(Node newNext){
next = newNext;
}
}
und mein bisheriges Programm:
Code:
public class Liste {
public static void sortAuf(Node listenStart) {
Node tmp = listenStart; //Lauf Element auf Anfang setzen
Node tmpStart = listenStart; //Erstes Element speichern
boolean sorted = false; //Ist Liste sortiert?
while (!sorted) {
Integer tmpInt = (Integer) tmp.data;
Node nachfolger = tmp.link;
Integer tmpIntNext = (Integer) nachfolger.data;
//Wenn vorderer Wert > hinterer Wert
if (tmpInt.intValue() > tmpIntNext.intValue()) {
//Daten vertauschen...
nachfolger.data = tmpInt;
tmp.data = tmpIntNext;
}
//Überprüfen ob Liste sortiert ist
tmp = tmpStart;
while (tmp.link != null) {
tmpInt = (Integer) tmp.data;
nachfolger = tmp.link;
tmpIntNext = (Integer) nachfolger.data;
//Wenn vorderer Wert > hinterer Wert
if (tmpInt.intValue() > tmpIntNext.intValue()) {
//ist Liste nicht sortiert..
//Daten vertauschen...
nachfolger.data = tmpInt;
tmp.data = tmpIntNext;
sorted = false;
break; //Überprüfung abbrechen
} else {
if (tmp.link.link == null) {
sorted = true;
break;
}
}
tmp = tmp.link;
}
}
}
public static void printListe(Node start) {
Node tmp = start;
int i = 0;
while (tmp.link != null) {
Integer objInt = (Integer) tmp.data;
int x = objInt.intValue();
System.out.println("Liste an Stelle " + i + " = " + x);
i++;
tmp = tmp.link;
}
Integer objInt = (Integer) tmp.data;
int x = objInt.intValue();
System.out.println("Liste an Stelle " + i + " = " + x);
}
public static void main(String[] prev) {
Node ende = new Node(new Integer(23), null);
Node index4 = new Node(new Integer(59), ende);
Node index3 = new Node(new Integer(64), index4);
Node index2 = new Node(new Integer(19), index3);
Node index1 = new Node(new Integer(45), index2);
Node start = index1;
System.out.println("Liste unsortiert: ");
printListe(start); //Liste ausgeben
System.out.println();
System.out.println("Liste aufwaerts sortiert: ");
sortAuf(start); //Liste sortieren
printListe(start); //Liste ausgeben
}
}
Die Methode sortiert die erstellte Liste aufwärts. Nun soll ich das kleinste und das größte Element ausgeben. Aber ich weiß nicht genau wie, bzw ob ich eine neue Methode erstellen soll oder in die Methode "sortAuf" integrieren soll. Meine Idee wäre jetzt in der Methode der ersten Index und den letzten Index auszugeben, da die Liste ja sortiert wird. Zusätzlich muss noch eine Methode her, die alle Elemente mit geraden Zahlen löscht und die neue Liste ausgibt, hier habe ich noch keine Idee. Könnte mir jemand helfen? Weiß absolut nicht weiter.
Schon mal Dank im vorraus.
MfG