2016-04-08 4 views
0

Ich habe eine einfach sortierte verkettete Liste für den String-Typ geschrieben. Lassen Sie mich Ihnen sagen, was ich zu tun habe.Datenstruktur für Key-Wert in Java ohne Sammlung erstellen

Es gibt Wörter, die in sortierter verknüpfter Liste gespeichert werden sollen. Jedes Wort hat einige Variationen (oder Bedeutungen FYI), die auch in einer einfach sortierten verketteten Liste gespeichert werden müssen.

Also im Grunde jedes Wort in der verknüpften Liste hat Liste der Variationen verknüpft.

Das Problem ist, wie Sie sie verbinden. Ich meine, wenn das Wort entfernt würde auch ihre Variationen zu entfernen.

Jede Hilfe wäre willkommen. Vielen Dank im Voraus.

Update:

unten LinkedList sortiert:

public class LinkedList { 

private Node start = null; 

private class Node{ 
    private String value = null; 
    private Node next = null; 
} 
public void insert(){ 
    // This method will loop from head and inserts in ascending order 
} 
} 
// And other methods like delete etc... 

Unten ist das, was ich zu tun versucht:

public class Demo { 

public class Word { 
    private String stringWord; 
    private LinkedList variations; 
} 

private LinkedList Words; 

Hinweis: Die Verwendung eines API oder Sammlung ist nicht erlaubt

+0

Hausaufgaben Probleme benötigen Sie zeigen uns Ihre Versuche – Natecat

+0

Die äußere Liste nicht 'Liste sein sollte ', aber eine' Liste ', wobei' Wort' zwei Felder hat, die die Wörter selbst ('String') und die Liste der Varianten (' Liste ') sind. – Andreas

+0

@Andreas Wie kann ich die Liste per String, mit Komparator oder vergleichbar sortieren. Wie? Und ich muss dieselbe verkettete Liste verwenden, um die Liste auch zu sortieren. wo meine Linkedlist nur Zeichenfolgen speichert. –

Antwort

0

folgt Da Sie eine „Variationen“ Liste mit jedem Wort in der Hauptliste zugeordnet werden sollen, müssen Sie die Hauptliste eine Liste von Word Objekten sein, nicht nur eine Liste von einfachen String Objekten.

Sie Angenommen habe über Generika gelernt, bedeutet dies, dass Sie Ihre LinkedList Klasse ändern müssen einen „Typ Parameter“ zu verwenden, anstatt String von hartzucodieren, so dass die value kann entweder ein Word (für die Hauptliste) oder a String (für die Variantenliste).

Da die Liste sortiert werden muss, können Sie den Typ-Parameter müssen Comparable sein, damit Ihr Code wird:

public class LinkedList<E extends Comparable<E>> { 
    private Node start = null; 

    private class Node{ 
     private E value = null; 
     private Node next = null; 
    } 

    public void insert(E newValue){ 
     // code here, e.g. 
     // node.getValue().compareTo(newValue) 
    } 
} 

public class Word implements Comparable<Word>{ 
    private String stringWord; 
    private LinkedList<String> variations; 

    @Override 
    public int compareTo(Word that){ 
     return this.stringWord.compareTo(that.stringWord); 
    } 
} 

// main list 
LinkedList<Word> words; 
+1

und auch überschrieben toString() in Word-Klasse, die StringWord zurückgibt, so beim Drucken von LinkedList von value.toString() wird Wörter drucken. –

0

Sie können Java Generics fo verwenden r LinkedList als

public class LinkedList<T> { 

    private Node start = null; 

    private class Node { 
     private T value = null; 
     private Node next = null; 
    } 
} 

// for string type 
LinkedList<String> variations = new LinkedList<String>(); 
// for word type 
LinkedList<Word> words = new LinkedList<Word>(); 
+0

Bitte lesen Sie meine Frage, Eingeschränkt, jede API oder Sammlung zu verwenden. –

+0

Was wollen Sie dann zum Sortieren der Liste verwenden? –

+0

Zum Zeitpunkt der Einfügung, Es wird eine Schleife vom Kopf und Einfügen in aufsteigender Reihenfolge. In der LinkedList-Methode insert(). –