Menu
CoddyTech

Chèn

Bài học 5 trên 14 trong khóa học Heap và hàng đợi ưu tiên: loạt bài về cấu trúc dữ liệu #7 của Coddy.

challenge icon

Thử thách

Dễ

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

Phương thức này nhận một số nguyên value:

  1. Thêm value vào cuối heap.
  2. siftUp: khi phần tử mới nhỏ hơn phần tử cha, hãy hoán đổi chúng. Dừng lại khi phần tử mới không còn nhỏ hơn phần tử cha hoặc khi bạn đến nút gốc.

Tự làm thử

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

int main() {
    MinHeap h;
    MinHeap_init(&h);
    char line[1024];
    while (fgets(line, sizeof(line), stdin)) {
        line[strcspn(line, "\r\n")] = '\0';
        char* cmd = strtok(line, " \t");
        if (!cmd) continue;
        if (strcmp(cmd, "insert") == 0) { char* arg = strtok(NULL, " \t"); if (arg) MinHeap_insert(&h, atoi(arg)); }
        if (strcmp(cmd, "dump") == 0) {
            for (int idx = 0; idx < h.count; idx++) { if (idx > 0) printf(" "); printf("%d", h.heap[idx]); }
            printf("\n");
        }
    }
    return 0;
}

Tất cả bài học trong Heap và hàng đợi ưu tiên: loạt bài về cấu trúc dữ liệu #7

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