• Keine Ergebnisse gefunden

int value

N/A
N/A
Protected

Academic year: 2021

Aktie "int value"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

MatthiasRöhm Blatt8

A

Allgemeine Informatik III / Systemnahe

Software I (WS 2008)

Abgabetermin:09.12.2008

1 Hashes

IndieserAufgabesollvonIhneneinHashimplementiertwerden.EinHashisteineDatenstruk-

turdieeserlaubt, übereinen Shlüssel, direktaufdiediesemShlüsselzugeordneten Werte

zuzugreifen.EinHash-ElementbestehtsomitauseinemShlüssel/WertPaar.JederShlüssel

darfnureinMalimHashvorkommen.DerZugriaufeinenWerterfolgtsomitimmerüber

desseneindeutigenShlüssel.InternwerdendieDateneinesHashesineinemVektorgespeihert.

InterneRepräsentationeinesHash.

EineHashfunktionhashbildetjedenmöglihenShlüsselaufeinenIndeximVektorab.Eskann

vorkommen,dassdieHashfunktionhashfürzweivershiedeneShlüsseldengleihenIndex ermittelt.ErzeugtdieHashfunktionfürzweiShlüsselk1, k2mit k16=k2dengleihenIndex hash(k1) =hash(k2) =i,sowirdanderPositionidesVektorseinZeigeraufeineListemit

denElementene1unde2gespeihert.DieseListenimmtnunauhalleweiterenElementedes Hashesauf,fürdiedieHashfunktiondenIndexierzeugt.

2 Aufgabe (10 Punkte)

ShreibenSieeinHash-Modulhash.,aufBasisderfolgendenHeader-Dateihash.h,indem

StringsalsShlüsselundIntegeralsWertegespeihertwerdensollen.EinElementbestehtalso

auseinemString,einemIntegerundeinemZeigeraufdasnähsteElementderListe.IhrModul

solldiefolgendenFunktionenimplementieren,wobeidieHashfunktionhashgegebenist:

#ifndef HASH_H

#define HASH_H

#inlude <stdio.h>

#inlude <string.h>

#inlude <stdlib.h>

typedef strut _hash *Hash;

typedef strut _element *Element;

strut _element {

har *key;

int value;

Element next;

};

strut _hash {

unsigned int size; //Size of vetor

Element *entries; //Pointer to vetor

};

extern unsigned int hash(har *key, unsigned int size);

extern void reate_hash(Hash *h, unsigned int size );

extern int put( Hash h, har *key, int value );

extern int get( Hash h, har *key, int *value );

extern int hange_value( Hash h, har *key, int value );

extern void print( Hash h );

#endif

• unsigned int hash(char ∗key, unsigned int size);

gibteinenIndexfürdenShlüsselkeyzwishen0undsize−1zurük.DieseFunktionist

imAnhangbeshrieben!

• void create(Hash ∗h, unsigned int size);

erzeugteinenHashmiteinemVektorderGroÿesize.sizesollteeinePrimzahlsein.

• int put(Hash h, char ∗key, int value);

einShlüssel/WertPaarwirdindenHasheingefügt.FallsderShlüsselshonvorhanden

ist,gibtdieFunktion0zurük.Ansonsten1.

(2)

• int get(Hash h, char ∗key, int ∗value);

der zu dem Shlüsselkey gehörende Wert wirdaus dem Hash gelesen undin die als

ZeigerübergebeneVariable∗valuegespeihert.FallsderShlüsselnihtexisiertgibtdie Funktion0zurük.Ansonsten1.

• int change_value(Hash h, char ∗key, int value);

verändertdenWertdesElementsmitdemShlüsselskey.FallsderShlüsselnihtexisiert

gibtdieFunktion0zurük.Ansonsten1.

• void print(Hash h);

alleShlüssel/WertPaaredesHasheswerdenandieStandardausgabeausgegeben.

DieHeader-Dateihash.hunddieimAnhangaufgeführteHash-Funktionkönnenvonder

Vorlesungsseiteheruntergeladenwerden.ZumTesten Ihres Moduls können Sievon derVor-

lesungsseiteeinenQuellodezurBestimmungderWorthäugkeiteinesTextesherunterladen.

DasProgrammbenötigtnatürliheinkorrektfunktionierendesHash-Modulhash..

3 Anhang

//Die Hash-Funktion zur Berehnung des Hashwerts eines Strings

unsigned int hash(har *key, unsigned int size) {

unsigned int h = 0;

while(*key != '\0') {

h = 31 * h + *key;

key++;

}

return (h % size);

}

Referenzen

ÄHNLICHE DOKUMENTE

In the following sections, SHA-512 is described before SHA-384. That is because the SHA-384 algorithm is identical to SHA-512, with the exception of using a different initial

Die Grundsteinlegung erfolgte durch Herzog Georg selbst, was einmal mehr die Bedeutung des landesherrlichen Stützpunktes heraushebt.5 Möglicherweise entstand mit dem raschen

For the second step we take the endpoint estimator of Hall (1982), which is based on a linear combination of the m largest order statistics which has the property that for known

Bei aller Liebe zu Mintonia musste Micheddu auch auf diesem Gebiet seine Stärke beweisen.. Sein Sieg aber löst korrespondierend einen Aufstand der anderen

Eine Veranstaltung im Rahmen des Modellprojekts „Lernende Stadt“ in Ko- operation mit dem Landesinstitut für Schule/Bereich politische Bildung; der Bremer Senatorin für Arbeit,

Gemäß der Kostenverordnung Bau (BauKostV) vom 3. 463 — 203-c-7), zuletzt geändert durch die Sechste Verordnung zur Änderung der Kostenverordnung Bau vom 26. Fortgeschrieben

Das Gedicht „Er bildet ihm ein, als sehe er sie vor sich“ von Paul Fleming ist auf abi-pur.de veröffentlicht... sie

Die evangelische Kirche übernahm damit die Stellvertretung für ei- nen Staat, der die religiöse Bildung bewusst aus sei- nem Schulkonzept ausklammerte, schuf aber auch ein