Menu
CoddyTech

put

Bài học 5 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 put vào lớp HashMap.

Phương thức nhận một số nguyên key và một số nguyên value, rồi lưu cặp này vào bảng:

  • Nếu khóa đã tồn tại, hãy cập nhật giá trị của nó.
  • Nếu không, hãy thêm một cặp [key, value] mới vào bucket phù hợp và tăng 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); }
    }
    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