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.
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