Menu
CoddyTech

size

Bài học 9 trên 14 trong khóa học Bảng băm, loạt cấu trúc dữ liệu #4 của Coddy.

challenge icon

Thử thách

Dễ

Thêm phương thức size vào lớp HashMap.

Phương thức này không nhận đầu vào và trả về số cặp hiện được lưu trong bảng (giá trị của count).

Tự làm thử

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "hashmap.h"

int main() {
    HashMap h;
    HashMap_init(&h);
    char line[256];
    while (fgets(line, sizeof(line), stdin)) {
        line[strcspn(line, "\r\n")] = '\0';
        char* cmd = strtok(line, " \t");
        if (!cmd) continue;
        if (strcmp(cmd, "state") == 0) { printf("%d %d %d\n", h.capacity, h.capacity, h.count); }
        if (strcmp(cmd, "hash") == 0) { char* arg = strtok(NULL, " \t"); if (arg) printf("%d\n", HashMap_hash(&h, atoi(arg))); }
        if (strcmp(cmd, "put") == 0) { char* a = strtok(NULL, " \t"); char* b = strtok(NULL, " \t"); if (a && b) HashMap_put(&h, atoi(a), atoi(b)); }
        if (strcmp(cmd, "bucketSize") == 0) { char* arg = strtok(NULL, " \t"); if (arg) printf("%d\n", h.buckets[atoi(arg)].size); }
        if (strcmp(cmd, "count") == 0) { printf("%d\n", h.count); }
        if (strcmp(cmd, "get") == 0) { char* arg = strtok(NULL, " \t"); if (arg) printf("%d\n", HashMap_get(&h, atoi(arg))); }
        if (strcmp(cmd, "containsKey") == 0) { char* arg = strtok(NULL, " \t"); if (arg) printf("%s\n", HashMap_containsKey(&h, atoi(arg)) ? "true" : "false"); }
        if (strcmp(cmd, "remove") == 0) { char* arg = strtok(NULL, " \t"); if (arg) HashMap_remove(&h, atoi(arg)); }
        if (strcmp(cmd, "size") == 0) { printf("%d\n", HashMap_size(&h)); }
    }
    return 0;
}

Tất cả bài học trong Bảng băm, loạt cấu trúc dữ liệu #4

Tự luyện tập: Trình biên dịch C online