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.
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:
- Thêm
valuevào cuốiheap. - 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