Ich soll eine Skip Liste implementieren mit folgender Methoden
public void add(int value) fügt eine Zahl in die Liste ein.
public boolean contains(int value) bestimmt, ob eine Zahl in der Liste vorhanden
ist.
Mein Problem bei add ist es soll eine x-beliebge zahl in die Liste eingefügt werden. Wie macht man das ?
public class SkipList {
public final static int MAX_HEIGHT = 32;
private class SkiplistNode{
public int value;
public SkiplistNode[] next;
public SkiplistNode(int value, SkiplistNode[] next)
{ this.value = value; this.next = next; }
}
private final double p;
private int height = 0;
private final SkiplistNode head = new SkiplistNode(Integer.MIN_VALUE, new SkiplistNode[MAX_HEIGHT]);
public SkipList(double p) { this.p = p; }
public void add(int value) {
value.add (3,3);
throw new IllegalStateException("Implement this function!");
}
Aber Ich muss in meinem Code folgende Methoden implementieren:
public void add(int value) fügt eine Zahl in die Liste ein. Meine Idee war
value.add (3,3);
Aber ich muss das ja für eine beliebige Zahl machen
• public boolean contains(int value) bestimmt, ob eine Zahl in der Liste vorhanden
ist.
Da hatte ich die Idee ArrayList.contains(desiredElement) zu verwenden
So in etwa:
if (Number.contains()) {
System.out.println(„Number found“);
} else {
System.out.println(„Number not found“);
• public int successor(int value) liefert den nächstgrößeren Wert (oder den
Wert Integer.MIN_VALUE, falls der Wert keinen Nachfolger hat bzw. nicht in der
Liste existiert).
• public int predecessor(int value) liefert den nächstkleineren Wert (oder den
Wert Integer.MIN_VALUE, falls der Wert keinen Nachfolger hat bzw. nicht in der
Liste existiert).
• public String toString() gibt die Liste aus. Jede Ebene im String ist dabei
durch einen Zeilenumbruch (’\n’) getrennt.
Mein Problem ist gerade ich finde unterschiedliche Beschreibungen was eine Skipliste sein soll und je nachdem was ich da gefunden habe, macht das Vorgegebene mehr oder weniger Sinn.
Mir ist z.b. nicht ganz klar was „p“ darstellen soll
Ich muss mir da gleich mal was anschauen zu.
Aber eins Vorweg. Ich werde hier keine fertige Lösung anbieten einfach anbieten, der Sinn ist ja, dass du auch was mitnimmst
Kannst du einmal kurz skizzieren, wie die Liste intern aufgebaut ist? Also ob es sich um eine (doppelt)verkettet Liste, ein Array oder einen (binären) Baum handelt? Weil das konnte ich jetzt noch nicht ganz rauslesen. Es sieht so nach einer baumartigen Struktur aus… also einem non-binary n-Tree (siehe auch hier https://en.wikipedia.org/wiki/Tree_(data_structure)#Terminology und hier https://en.wikipedia.org/wiki/List_of_data_structures#Trees)… aber genau weiß ich das nicht. Wie soll eingefügt, (sortiert,) gesucht und iteriert (bzw. geskipped) werden? Ich hab da noch zu viele Fragezeichen, um dir nützlich helfen zu können.
Ok, Danke! Jetzt verstehe ich das. Das hat also mit einer ArrayList, deren Elemente bei der Ausgabe „geskipped“ werden, nix zu tun. Ehrlichgesagt kannte ich diese Art der Liste noch gar nicht. Ich mache mir später mal Gedanken dazu.
Also die Aufgabenbeschreibung ist verwirrend, und mir ist absolut nicht klar was „p“ und „height“ bringen sollen. Ich hab mal eine add(value) Methode implementiert. Die ist ungetestet und die hab ich direkt hier ins Forum getippt. Würde mich interessieren ob die die Aufgabenstellung löst.
Die Bedeutung von p und height sind doch auf Wikipedia erklärt? (Wobei height eben log1/pn ist). Hier irgendwelchen Code hinzuwerfen, der nicht mal ansatzweise mit der Aufgabenstellung zu tun hat, ist vermutlich nicht so hilfreich. Aber … die Frage „Wie macht man das?“ kann man halt auch leider kaum mit etwas anderem beantworten als „Man überlegt sich, was der Computer machen muss, und schreibt dann den Code, den man schreiben muss, damit der Computer das macht“, oder… eben … dem Code selbst…
Ja weil keiner irgendwie helfen möchte und nein ich möchte nicht das jemand für nicht die Hausaufgaben macht !!! . Ich habe nur probleme bei der Implementierung und meine eigene Ansätze
Nur leider befand sich davon nichts in der originalen geposteten Aufgabenstellung. Mit Wikipedia die restlichen Infos zu ergänzen was denn tatsächlich gefordert wird als es geschrieben wurde, ist einfach nur raten.