Presentation is loading. Please wait.

Presentation is loading. Please wait.

Data Structures.  Consider storing data for 100 employees by their Social Security Numbers (SSN)  SSN range: 000000000 – 999999999  A fast search:

Similar presentations


Presentation on theme: "Data Structures.  Consider storing data for 100 employees by their Social Security Numbers (SSN)  SSN range: 000000000 – 999999999  A fast search:"— Presentation transcript:

1 Data Structures

2  Consider storing data for 100 employees by their Social Security Numbers (SSN)  SSN range: 000000000 – 999999999  A fast search: SSN is index of an array  E.g.  myItem is at position 123456789  myItem = myArray[123456789]  Characteristics  Good--Efficiency of O(1)  Bad-- Requires array of size 10 9, most of which is unoccupied  Can we have something that  Has efficiency of nearly O(1) and  Requires reasonable amount of space

3  Keys (e.g., SSN) are “hashed” (mish-mashed) to another number, which can be used as index for a smaller array. E.g., item1 key: 12345689  89 myArray[89] = item1 Item2 key: 12345675  75 myArray[75] = item2 Item3 key: 34578921  21 myArray[21] = item3 Item4 key: 92345721  21 myArray[?] = item4  Last 2 cases: collision, when two keys hash to the same hash value

4 item1: 12345689  89 item2: 12345675  75 item3: 34578921  21 item4: 92345721  21 Item5: 78543875  75 Item6: 54321924  24 Item7: 33112220  20 … 0 1 20 23 75 76 89 … 21 … myTable 24 Ω Ω Ω Ω Ω Ω Ω Ω Ω item7 item6 item4 item3 item5item2 item1 … Data KeyHashed Index

5 item1: 12345689  89 item2: 12345675  75 item3: 34578921  21 item4: 92345721  21 Item5: 78543875  75 Item6: 54321924  24 Item7: 33112220  20 … 0 1 20 23 75 76 89 … 21 … myTable 24 Data KeyHashed Index Item 7 Item3 22 Item4 Item 6 Item 2 Item 5 Item 1

6  Given names as keys:  amy  tammy  frank  billy  Convert keys to array indices.  Max size of array: 10  name  (hashF1) integer  (hashF2) index  E.g.,  amy  Ascii(a) + Ascii(m) + Ascii(y)  = 97 + 109 + 121 = 327 327 % 10 = 7  tammy  Ascii(t) + Ascii(a) + Ascii(m) + Ascii(m) + Ascii(y) = 116 + 97 + 109 + 109 + 121 = 552 552 % 10 = 2 … 0 1 2 6 8 10 … myTable 7 Ω Ω Ω Ω Ω Ω Ω tammy amy …

7  Given: key = 1234567  h(key) = key % 100  1234567  67  3785421  21  Given: key = beth  h 1 (key) = ascii(b) + ascii(e) + ascii(t) + ascii(h) = 98 + 121 + 116 + 104 = 419  h 2 (419) = 415 % 100 = 19  h(key) = h2(h1(key)) = 19  Thus, “beth” -> 19

8  void insert (elemType &item);  Inserts item in the table,  bool remove (keyType key);  Removes data item corresponding to key. Returns true when successful; false, otherwise.  bool search (keyType key);  Searches the table for item corresponding to key. Returns true when match found; false, otherwise.  elemType search(keyType key);  Searches and return the value corresponding to key  book isEmpty();  void clear();

9  bool search (keyType key); 1. hash(key)  anIndex T(n) = c1 2. IF array[anIndex] is not empty THEN T(n) = c2 + c3 search the linked list ELSE value is not present END IF 3. return true/false T(n) = c4 1. T(n) = c1 + c2 + c3 + c4 O(1) almost

10 1. Describe the data structure to represent a hash table 2. Write a C++ code for the structure, to be included in the private section of the (hash) Table class.

11 0 1 8 7 2 3 4 5 6 9 Ω Ω Ω Ω Ω Ω Ω Ω Ω Ω ArrayStruct

12  To represent a group of data elements of different types as a single unit  Contrast this with an array, whose elements must of the same type.  Is like a class, but every part is public by default. No operations is a struct.

13 Definition : struct athlete_t { string name; int weight; // in kg int height; // in cm }; Usage: athlete_t ath; ath.name = “John”; ath.weight = 200; ath.height = 190; cout << ath.name << endl; cout << ath.weight << endl; cout << ath.height << endl; athlete_t team[MAX]; team[0] = ath;

14 private: struct nodeType { elemType data; nodeType *next; }; static const int MAX = 10; nodeType* list[MAX]; };

15 class Table { public: Table(); void insert(elemType item); bool remove(keyType key); bool retrieve(keyType key, elemType &item); void clear(); void print(); private:... };

16 1. Constructor 1. What needs to be done in the constructor? 2. Write a C++ code to implement Table(). 2. Insert 1. What are the steps necessary to insert an item into the Hash table? 2. Write a C++ code to implement insert(elemType item) in the Table class.


Download ppt "Data Structures.  Consider storing data for 100 employees by their Social Security Numbers (SSN)  SSN range: 000000000 – 999999999  A fast search:"

Similar presentations


Ads by Google