01.09.2014 Views

Worksheet 37: Hash Tables (Open Address Hashing) - Classes

Worksheet 37: Hash Tables (Open Address Hashing) - Classes

Worksheet 37: Hash Tables (Open Address Hashing) - Classes

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Worksheet</strong> <strong>37</strong>: <strong>Open</strong> <strong>Address</strong> <strong>Hash</strong> <strong>Tables</strong> Name:<br />

struct open<strong>Hash</strong>Table {<br />

EleType ** table;<br />

int tablesize;<br />

int count;<br />

};<br />

void init<strong>Open</strong><strong>Hash</strong>Table (struct open<strong>Hash</strong>Table * ht, int size) {<br />

int i;<br />

assert (size > 0);<br />

ht->table = (EleType **) malloc(size * sizeof(EleType *));<br />

assert(ht->table != 0);<br />

for (I = 0; I < size; i++) ht->table[i] = 0; /* initialize empty */<br />

ht->tablesize = size;<br />

ht->count = 0;<br />

}<br />

int open<strong>Hash</strong>TableSize (struct open<strong>Hash</strong>Table *ht) { return ht->count; }<br />

void open<strong>Hash</strong>TableAdd (struct open<strong>Hash</strong>Table * ht, EleType * newValue) {<br />

long int i = labs(HASH(newValue));<br />

if ((ht->count / (double) ht->tablesize) > 0.75) _resize<strong>Open</strong><strong>Hash</strong>Table(ht);<br />

ht->count++;<br />

}<br />

void open<strong>Hash</strong>TableBagContains (struct open<strong>Hash</strong>Table *ht, EleType * testValue) {<br />

long int i = labs(HASH(newValue));<br />

}<br />

An Active Learning Approach to Data Structures using C 3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!