Hashing mit Chainig Implementierungsproblem bei Löschemethode

Status
Nicht offen für weitere Antworten.
Gute Abend neues Forum,

Edit3: neuer Versuch den Code irgendwie zu übermitteln,weil die java Code Formatierung nicht funktioniert hat.
Ein Dank geht an
faetzminator für den neuen Tipp mit pastebin.

Mein Problem beim Hashing mit Chaining ist das Löschen eines Elementes das nicht am Ende der Liste steht.
Es werden alle weiteren Einträge die nach dem zu löschenden Eintrag sich befinden nicht mehr bei der print Tabelle Methode aufgeführt. (sozusagen abgeschnitten)
Ich glaube ich habe die Zeiger verhunst bzw. nicht richtig gesetzt ,aber bin mir nicht sicher.
Die delete Methode findet man in der Klasse HashChain.

Hier die Links:

Klasse ChainLink
pastebin - ChainLink - post number 1393133

Klasse HashChain
pastebin - HashChain - post number 1393140

die Methode delete in der Klasse HashChain die Probleme macht.
pastebin - Implementierungsproblem - post number 1393142

Ich hoffe ihr könnt das so einigermaßen lesen und verstehen.


Mit freundlichen Grüssen
conspectumortis69
 
Zuletzt bearbeitet:

tfa

Top Contributor
Du musst den Quelltext in Java-Tags packen:


[noparse]
Java:
 Hier rein damit!
[/noparse]
 

faetzminator

Gesperrter Benutzer
nebst dem tipp von tfa gibt es noch "so eine Erfindung" namens "Pastebin"
Ein Pastebin (auch NoPaste) ist eine Webanwendung, die es Benutzern ohne Anmeldung erlaubt, beliebige Textschnipsel, üblicherweise Quelltext von Programmen, auf die Webseite hochzuladen. Dort können die Texte öffentlich eingesehen werden. Zu dem typischen Funktionsumfang eines Pastebin-Systems gehört Syntaxhervorhebung für diverse Programmiersprachen.
z.B. pastebin - Type, paste, share. find ich toll
 
@tfa

hi, ja habe ich gemacht und in der vorschau war alles schön als java code zu sehen,nach dem abschicken waren nur die zeilencodenummern aufgelistet und in der letzten zeilencodenummer der ganze Code als ein zusammenhängender String.

@faetzminator

werde ich mir mal anschauen und es damit versuchen,falls ichs ned hinkriege,weswegen auch immer , werde ich beide Methoden morgen an den Hochschulrechnern ausprobieren.

Gruß
conspectumortis69
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
hi, ja habe ich gemacht und in der vorschau war alles schön als java code zu sehen,nach dem abschicken waren nur die zeilencodenummern aufgelistet und in der letzten zeilencodenummer der ganze Code als ein zusammenhängender String.
o_O omfg...
1) solltest du den fehler gemacht haben, den WYSIWYG-editor zu aktivieren, dann stell den wieder auf standard-editor um
2) Wenn du auf deinem rechner irgendeinen unüblichen editor benutzst, könntest du versuchen, den code ersmal in einen sehr viel einfacheren Notepad rüberzukopieren, und erst von dort in den Browser. Manchmal bleiben irgendwelche syntax-highlight-dinger im code hängen, und bringen ggf. alles durcheinander...
3) versuch's mit einem komplett neuen beitrag. Kann sein, dass beim ersten irgendwas schief gelaufen ist, dort ist dann verbrannte erde

manoman, das kann doch nicht sein dass hier jemand dermaßen massive probleme mit dem editor hat... ???:L Anosnsten... Poste den code einfach schonmal rein. STRG+Shift+F und alle probleme sind eh gelöst ;)
 
huhu 0x7F800000,

ich habe oben im ersten Beitrag mal das mit pastebin ausprobiert.

Ich hab eigentlich alles so gelassen mit dem Antwortfenster und auch vor langer Zeit einmal hier gepostet ,deswegen war ich etwas erstaunt das ich solche Probleme hatte mit dem Post,obwohl mir die Vorschau etwas anderes vorgegaukelt hat.
Keine Ahnung ob das was mit meinem neuen Ubuntu Linux zu tuen hat.
 

faetzminator

Gesperrter Benutzer
Ich habe zwar das Problem nicht gerade gesehen, aber folgende Punkte solltest du in Zukunft beachten
Java:
momentan.getKey() == key[code=Java][/quote]
Nur primitive Datentypen werden mit == verglichen, Objekte (wie z.B. Strings) mit equals(), in deinem Fall wäre das
[code=Java]momentan.getKey().equals(key)
Java:
public ChainLink next;
Java:
momentan=momentan.next;
Mach deine Variablen private und generiere Getters und Setters, z.B. so
Java:
public ChainLink getNext() {
    return this.next;
}
public void setNext(ChainLink next) {
    this.next = next;
}
Dann realisierst du die 2. Zeile einfach mit
Java:
momentan = momentan.getNext();
Anm.: in diesem Fall müsste man sich überlegen, ob statt getNext() ein next() sinnvoll wär

Gruss, faetzminator
 

0x7F800000

Top Contributor
Ochje... musst du denn auch die verketteten Listen für das chaining komplett selbst implementieren, statt einfach LinkedList zu nehmen?

ich würde in dem Fall allgemein empfehlen, das modul "verkettete Liste" separat ausführlich zu testen, bevor du mit der größeren hashing-struktur rumhantierst. Teste erstmal die Liste separat, wenn damit alles ok ist, kannst darauf weiterbauen, ansonsten wird das problem klarer eingegrenzt.
 
@0x7F800000

wir müssen im Prinzip unter Vorgabe eines Code Rumpfes die ganzen Methoden und Listen selber implementieren,am besten ohne Zuhilfenahme von vorhanden Methoden etc. hashing mit open Adressing, linear probing liegt noch vor mir =)
Veränderungen am Rumpf sind soweit ich weiss nicht gern gesehen.

Das mit dem extra Testen werde ich auch wohl machen müssen.

Bei mir ist es bisschen länger her das ich mit Java gearbeitet habe bzw. ich hab noch teilweise Mühe und Not mit der Implementierung und vergesse auch mal gerne ein "else" und suche Stunden nach dem Fehler =)

Zumindest verstehe ich algorythmisch die ganzen Probleme,nur die Implementierung ist wie gesagt ein Fall für sich.

@faetzminator
danke dir,ich habs schonmal implementiert, hoffe nur noch das wenn ich morgen den Prof frage ob ich neue Methoden im Rumpf reinschreiben darf wegen getNext ,er das akzeptiert. *bibber*

P.S: hab heute dazugelernt : equals nutzen für nicht primitive Datentypen =)
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben