Ch−ơng 4 B cõy và bộ nhớ ngoà
4.4. B cõy và bộ nhớ ngoài
Do mỗi nỳt trờn B-cõy chứa đợc nhiều khúa nờn cấu trỳc dữ liệu này rất thớch hợp cho việc cài đặt trờn bộ nhớ ngoà Chỳng ta cú thể cài đặt trực tiếp B-cõy trờn bộ nhớ ngoài bằng một số cỏch nh− sau:
Cách 1:
- Dựng một số byte đầu tiờn trờn tệp để chứa vị trí cđa nút gốc. - Cỏc nỳt của cõy sẽ cú cấu trỳc là:
struct Node
{int keynum; // so khoa cua mot nut
int key[N+1]; //moi nut co nhieu nhat N khoa
long son[N1+1]; //cac so nguyen chi vi tri cac nut con cua mot nut };
Mảng son[N1+1] sẽ chứa vị trớ trờn tệp của cỏc nỳt con của một nút. Có thĨ sưa đỉi ch−ơng trình 41BCAỴCPP cho trờng hợp này bằng cỏch khai bỏo thờm hàm Node GetNode(int n) để truy xuất đến một nỳt ở vị trớ n trờn tệp. Chỳng tụi dành cụng việc này cho những sinh viờn học lực khá.
Cách 2:
Cỏc nỳt chứa thụng tin luụn đ−ỵc l−u trữ trờn tệp, mỗi lần nhập một nỳt mới ta lại nhập vào cuối tƯp. Trong bộ nhớ ta tạo ra một cấu trúc dữ liệu B-cõ Tuy nhiờn cỏc nỳt trong cấu trỳc dữ liệu khụng chứa thụng tin về dữ liệu hoặc cỏc khúa mà chỉ chứa vị trớ của cỏc nỳt trờn tệp. Mỗi lần nhập mới một nút ta nhập vào cuối tệp, đồng thời cập nhật thụng tin vào cấu trúc dữ liƯu trong
Cấu trúc dữ liƯu2 – Ch−ơng 4. B - cõy và bộ nhớ ngoài
bộ nhớ, tức là chèn nút mới, nút mới này có một tr−ờng chỉ vị trớ của bản ghi mới trờn tệp. Khi xóa một bản ghi nào đú ta xúa trờn cấu trỳc trong bộ nhớ, tuy nhiờn bản ghi tơng ứng trờn tệp thỡ vẫn cũn. Chơng trỡnh sẽ cú một chức năng dọn dẹp: khi chạy chức năng này ta đọc và ghi sang tệp mới cỏc bản ghi trờn tệp mà cú nỳt t−ơng ứng trờn cấu trỳc dữ liệu, sau đú xúa tờn tệp cũ và đổi lại tờn tệp mới thành tờn tệp cũ.
http://www.ebook.edụvn
Cõu hỏi và bài tập