Hallo ersteinmal,

nach stundenlanger Recherche im Internet und dem Verwerfen einiger eigener Ideen würde ich Euch gerne um Rat fragen.
Für die Vorlesung "Algorithmen und Datenstrukturen" sollen wir ein kleines Wörterbuch schreiben, welches über eine Hashtable realisiert werden soll.
Für das Hashen sollen wir die Divisionsrestmethode nutzen ( k % m ). So weit so gut. In der Aufgabe wird verlangt, dass wir dafür den String (das entsprechende Wort aus dem Wörterbuch) möglichst geschickt (und hier liegt mein Problem ) in einen Integer umwandeln sollen, den wir dann hashen können.
Meine erste Idee war durch einfaches shiften die ASCII-Werte in einen Integer zu verwandeln, das geht ja aber leider nur bis fünf Zeichen gut..
Als negativ-Beispiel ist die einfache Addition der ASCII-Werte genannt.

Mein bisheriger Ansatz ist:
Code:
	int LinHTable::hash(string hashString)
{
const int MAX_TABLESIZE = 29;
int hashNumber=0;
int intChar;
for(int i=0; i!=hashString.size(); i++)
{
    hashNumber = &#40;&#40;hashNumber << 8&#41; + hashString&#91;i&#93;&#41;%MAX_TABLESIZE ;
&#125;
return hashNumber;
&#125;
Nur leider kann ich auch nicht viel dazu sagen, warum ich das so mache... wir sollen unseren algorithmus aber leider begründen
deswegen kann ich auch nicht einfach irgendwelche kryptischen Hashverfahren nehmen, die ich im Internet finde djb etc.

Habt ihr vielleichtg einen guten Ansatz für mich?

Vielen Dank im Voraus!

Christian
Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!