1 / 6

EPL231 – Data Structures and Algorithms

Lab 10: Hash Tables with Chaining. EPL231 – Data Structures and Algorithms. Διαχείριση συγκρούσεων με αλυσίδωση.

gaille
Download Presentation

EPL231 – Data Structures and Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lab 10: Hash Tables with Chaining EPL231 – Data Structures and Algorithms Panayiotis Charalambous

  2. Διαχείριση συγκρούσεων με αλυσίδωση • Αφού περισσότερα από ένα κλειδιά μπορούν να πάρουν την ίδια τιμή από τη συνάρτηση κατακερματισμού, μπορούμε να θεωρήσουμε ότι κάθε θέση του πίνακα ‘δείχνει’ σε μια ευθύγραμμη απλά συνδεδεμένη λίστα. • Για κάθε i, στη θέση Η[i] του πίνακα βρίσκουμε λίστα που περιέχει όλα τα κλειδιά που απεικονίζονται από τη συνάρτηση h στη θέση αυτή. • Για να βρούμε κάποιο κλειδί k, πρέπει να ψάξουμε στη λίστα που δείχνεται στη θέση H[h(k)]. • Εισαγωγές και εξαγωγές στοιχείων μπορούν να γίνουν εύκολα με βάση τις διαδικασίες συνδεδεμένων λιστών. Panayiotis Charalambous

  3. Παράδειγμα 0 67 1 34 hsize = 11 2 46 3 114 26 4 5 17 6 7 8 85 85 Εισαγωγή: 114 46 26 67 17 34 9 10 Panayiotis Charalambous

  4. Συναρτήσεις για υλοποίηση • Πίνακας κατακερματισμούσταθερού μεγέθους (TABLE_SIZE): • void destroyTable(HashTable * table); • void insertEntry(HashTable *table, Student *student); • void deleteEntry(HashTable *table, const char *studentID); • HashEntry *findEntry(HashTable *table, const char *studentID); • Εισαγωγή 10000 φοιτητών με τυχαίο ID • Τύπωμα του πίνακα κατακερματισμού Panayiotis Charalambous

  5. Something COOL!!! /***************************************************************************** * * * -------------------------------- hashpjw ------------------------------- * * * *****************************************************************************/ int hashpjw(const void *key) { const char *ptr; int val; val = 0; ptr = key; while (*ptr != '\0') { int tmp; val = (val << 4) + (*ptr); if (tmp = (val & 0xf0000000)) { val = val ^ (tmp >> 24); val = val ^ tmp; } ptr++; } return val % PRIME_TBLSIZ; } Panayiotis Charalambous

  6. The End Panayiotis Charalambous

More Related