Hallo,
ich habe wieder ein Problem mit einer Liste
. Ich muss eine txt Datei einlesen und daraus eine Liste erstellen, die lexikografisch sortiert ist. Eigentlich nicht schwer, aber ich habe Vorgaben, für die ich meinen Lösungsweg nicht benutzen darf.
Hier die Node Class:
Die Methoden zum Sortieren bauen teilweise aufeinander auf. Die erste Methode soll so aussehen:
insertText soll vor beforeText in die Liste eingefügt werden, falls es klappt, soll true ausgegeben werden, falls beforeText nicht vorkommt in der Liste, soll false ausgegeben werden. Irgendwie verstehe ich diese Methode nicht.
Die zweite Methode soll so aufgebaut sein:
Der Begriff text soll in die Liste eingefügt werden, so dass die Liste lexikografisch sortiert wird. Die Methode insertBefore soll dabei benutzt werden. Das blöde ist, die Listenelemente sollen nicht vertauscht werden, sondern nur das einfügen eines neuen Listenelementes ist erlaubt.
Meine Methode:
Kann ich leider nicht verwenden, weil hier die Elemente vertauscht werden. Ich habe leider keine Ahnung wie ich das anders umsetzen kann. Hat jemand vielleicht einen Lösungsvotschlag oder einen Rat wie ich das umsetzen kann? Ich bin für jede Hilfe dankbar :wink:
ich habe wieder ein Problem mit einer Liste
Hier die Node Class:
Code:
public class TextNode{
public String data;
public TextNode link;
private String text;
private TextNode next;
public TextNode(String text, TextNode nextNode) {
this.text = text;
this.next = nextNode;
}
public String getText (){
return text;
}
public TextNode getNext(){
return next;
}
public void setNext(TextNode newNext){
next = newNext;
}
}
Die Methoden zum Sortieren bauen teilweise aufeinander auf. Die erste Methode soll so aussehen:
Code:
private boolean insertBefore(String insertText, String beforeText)
Die zweite Methode soll so aufgebaut sein:
Code:
public void insertSorted(String text)
Meine Methode:
Code:
public static TextNode lexicographicalSort(TextNode start) {
TextNode p = start;
TextNode pv;
if (p == null)
return start;
while (p.link != null) {
if ((((String) (p.data)).compareTo((String) p.link.data)) >= 0) {
if (start == p) {
pv = null;
} else {
pv = start;
while (pv.link != p)
pv = pv.link;
}
if (pv == null) {
start = p.link;
} else {
pv.link = p.link;
}
TextNode tmp = p.link.link;
p.link.link = p;
p.link = tmp;
p = start;
} else
p = p.link;
}
return start;
}
Kann ich leider nicht verwenden, weil hier die Elemente vertauscht werden. Ich habe leider keine Ahnung wie ich das anders umsetzen kann. Hat jemand vielleicht einen Lösungsvotschlag oder einen Rat wie ich das umsetzen kann? Ich bin für jede Hilfe dankbar :wink: