Bird
Raised Fist0
DSA Cprogramming~10 mins

Why Hash Map Exists and What Problem It Solves in DSA C - Test Your Knowledge

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a hash map that stores integer keys and values.

DSA C
typedef struct {
    int key;
    int value;
} HashMapEntry;

HashMapEntry map[[1]];
Drag options to blanks, or click blank then click option'
Ahash
Bkey
C100
Dvalue
Attempts:
3 left
💡 Hint
Common Mistakes
Using variable names instead of a number for array size.
Confusing key or value with size.
2fill in blank
medium

Complete the code to compute the hash index for a given key.

DSA C
int hashFunction(int key) {
    return key [1] 100;
}
Drag options to blanks, or click blank then click option'
A%
B*
C+
D-
Attempts:
3 left
💡 Hint
Common Mistakes
Using multiplication or addition instead of modulo.
Not limiting the index within array bounds.
3fill in blank
hard

Fix the error in the code that inserts a key-value pair into the hash map.

DSA C
void insert(HashMapEntry map[], int key, int value) {
    int index = hashFunction(key);
    map[index].key = key;
    map[index].[1] = value;
}
Drag options to blanks, or click blank then click option'
Ahash
Bkey
Cindex
Dvalue
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning to the key field instead of value.
Using wrong field names.
4fill in blank
hard

Fill both blanks to complete the code that retrieves a value by key from the hash map.

DSA C
int getValue(HashMapEntry map[], int key) {
    int index = hashFunction(key);
    if (map[index].key == [1]) {
        return map[index].[2];
    }
    return -1; // not found
}
Drag options to blanks, or click blank then click option'
Akey
Bvalue
Cindex
Dhash
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing with wrong variable.
Returning the key instead of value.
5fill in blank
hard

Fill all three blanks to complete the code that handles collision by linear probing in the hash map insertion.

DSA C
void insert(HashMapEntry map[], int key, int value) {
    int index = hashFunction(key);
    while (map[index].key != -1 && map[index].key != [1]) {
        index = (index [2] 1) [3] 100;
    }
    map[index].key = key;
    map[index].value = value;
}
Drag options to blanks, or click blank then click option'
Akey
B+
C%
D-
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong operators for index calculation.
Not handling wrap-around with modulo.

Practice

(1/5)
1. Why do we use a hash map instead of a simple list to store key-value pairs?
easy
A. To quickly find values using keys without searching the entire list
B. To store values in sorted order automatically
C. To save memory by compressing data
D. To allow duplicate keys with different values

Solution

  1. Step 1: Understand list search time

    In a simple list, finding a value by key requires checking each item one by one, which takes longer as the list grows.
  2. Step 2: Understand hash map lookup

    A hash map uses a special function to jump directly to the value's location, making search very fast regardless of size.
  3. Final Answer:

    To quickly find values using keys without searching the entire list -> Option A
  4. Quick Check:

    Hash map = fast key lookup [OK]
Hint: Hash maps speed up key-based searches [OK]
Common Mistakes:
  • Thinking hash maps store data sorted automatically
  • Believing hash maps compress data to save memory
  • Assuming hash maps allow duplicate keys
2. Which of the following is the correct syntax to declare a hash map in C using a struct and array?
easy
A. struct HashMap { int key; int value; } map[100];
B. HashMap map = new HashMap();
C. hash_map map;
D. map = {};

Solution

  1. Step 1: Recognize C syntax for struct arrays

    In C, a hash map can be represented as an array of structs with key and value fields.
  2. Step 2: Check options for valid C declaration

    struct HashMap { int key; int value; } map[100]; correctly declares a struct and an array of 100 elements. Other options use syntax from other languages or invalid C syntax.
  3. Final Answer:

    struct HashMap { int key; int value; } map[100]; -> Option A
  4. Quick Check:

    C struct array = struct HashMap { int key; int value; } map[100]; [OK]
Hint: C uses structs and arrays for hash maps [OK]
Common Mistakes:
  • Using C++ or Java syntax in C code
  • Trying to declare hash maps without structs
  • Using empty braces {} for initialization
3. Consider this simplified hash map code in C that stores keys and values:
struct Entry { int key; int value; };
struct Entry map[5] = {{1, 10}, {2, 20}, {3, 30}, {4, 40}, {5, 50}};

int findValue(int key) {
  for (int i = 0; i < 5; i++) {
    if (map[i].key == key) return map[i].value;
  }
  return -1;
}

int main() {
  printf("%d", findValue(3));
  return 0;
}
What is the output when this program runs?
medium
A. 3
B. -1
C. 30
D. Compilation error

Solution

  1. Step 1: Understand the findValue function

    The function loops through the map array and returns the value where the key matches the input.
  2. Step 2: Trace the call findValue(3)

    It finds key 3 at index 2 with value 30 and returns it. So printf prints 30.
  3. Final Answer:

    30 -> Option C
  4. Quick Check:

    Key 3 value = 30 [OK]
Hint: Loop finds key, returns matching value [OK]
Common Mistakes:
  • Confusing key with value in output
  • Assuming function returns key instead of value
  • Expecting compilation error due to struct
4. This code tries to find a value by key in a hash map but has a bug:
struct Entry { int key; int value; };
struct Entry map[3] = {{1, 100}, {2, 200}, {3, 300}};

int findValue(int key) {
  for (int i = 0; i <= 3; i++) {
    if (map[i].key == key) return map[i].value;
  }
  return -1;
}
What is the bug and how to fix it?
medium
A. The key comparison uses '==' instead of '='; replace '==' with '='
B. The struct is missing a constructor; add one to fix it
C. The return type should be void; change int to void
D. The loop goes out of bounds; change 'i <= 3' to 'i < 3' to fix it

Solution

  1. Step 1: Check loop bounds

    The array has 3 elements indexed 0,1,2. Loop with 'i <= 3' accesses map[3], which is out of bounds.
  2. Step 2: Fix loop condition

    Change loop to 'i < 3' to stay within valid indices and avoid runtime errors.
  3. Final Answer:

    The loop goes out of bounds; change 'i <= 3' to 'i < 3' to fix it -> Option D
  4. Quick Check:

    Loop bounds must match array size [OK]
Hint: Array index must be less than size, not less or equal [OK]
Common Mistakes:
  • Ignoring array bounds causing crashes
  • Confusing assignment '=' with comparison '=='
  • Changing return type unnecessarily
5. You want to store student IDs and their grades using a hash map in C. Which problem does using a hash map solve best compared to an array or list? A student ID is a large number and not continuous. Options: A) Allow multiple students to share the same ID B) Automatically sort students by their grades C) Save memory by storing only unique grades D) Quickly find a student's grade by their ID without searching all entries
hard
A. Allow multiple students to share the same ID
B. Quickly find a student's grade by their ID without searching all entries
C. Save memory by storing only unique grades
D. Automatically sort students by their grades

Solution

  1. Step 1: Understand the problem with large, non-continuous keys

    Arrays or lists require searching or large memory if keys are large and sparse.
  2. Step 2: How hash maps help

    Hash maps use a function to map large keys to storage locations, enabling fast lookup without scanning all data.
  3. Final Answer:

    Quickly find a student's grade by their ID without searching all entries -> Option B
  4. Quick Check:

    Hash map = fast lookup for large keys [OK]
Hint: Hash maps handle large keys efficiently [OK]
Common Mistakes:
  • Thinking hash maps sort data automatically
  • Believing hash maps compress data to save memory
  • Assuming duplicate keys are allowed
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard