Bảng băm với phương phỏp nối kết hợp nhất (Coalesced chaining Method)

Một phần của tài liệu giáo trình cấu trúc dữ liệu 2 (Trang 39 - 40)

3. CÁC PHƯƠNG PHÁP GIẢI QUYẾT ĐỤNG ĐỘ

3.2.Bảng băm với phương phỏp nối kết hợp nhất (Coalesced chaining Method)

(Coalesced chaining Method)

Mụ tả

- Cấu trỳc dữ liệu: Tương tự như trong trường hợp cài đặt bằng

phương phỏp nối kết trực tiếp, bảng băm trong trường hợp nàyđược

càiđặt bằng danh sỏch liờn kết dựng mảng, cú M phần tử. Cỏc phần

tử bị xung đột tại một địa chỉ được nối kết nhau qua một danh sỏch

liờn kết. Mỗi phần tử của bảng băm gồm hai trường:

 Trường key: chứa khúa của mỗi phần tử

 Trường next: con trỏ chỉ đến phần tử kế tiếp nếu cú xung đột.

-Khởi động: Khi khởi động, tất cả trường key của cỏc phần tử trong

bảng băm được gỏn bởi giỏ trị Null, cũn tất cả cỏc trường next được

gỏn –1.

- Thờm mới một phần tử: Khi thờm mới một phần tử cú khúa key

vào bảng băm, hàm băm f(key) sẽ xỏc định địa chỉ i trong khoảng từ

0đến M-1.

 Nếu chưa bị xung đột thỡ thờm phần tử mới vàođịa chỉ nàỵ  Nếu bị xung đột thỡ phần tử mới được cấp phỏt là phần tử

trống phớa cuối mảng. Cập nhật liờn kết next sao cho cỏc

phần tử bị xung đột hỡnh thành một danh sỏch liờn kết.

_Tỡm kiếm: Khi tỡm kiếm một phần tử cú khúa key trong bảng băm,

hàm băm f(key) sẽ giỳp giới hạn phạm vi tỡm kiếm bằng cỏch xỏc

định địa chỉ i trong khoảng từ 0 đến M-1, và việc tỡm kiếm phần tử

cú khoỏ key trong danh sỏch liờn kết sẽ xuất phỏt từ địa chỉ ị

Để minh họa cho bảng băm với phương phỏp nối kết hợp nhất, xột

vớ dụ sau:

Giả sử, khảo sỏt bảng băm cú cấu trỳc nhưsau: - Tập khúa K: tập số tự nhiờn - Tập địa chỉ M: gồm 10 địa chỉ (M={0, 1, …, 9} - Hàm băm f(key) = key % 10. Key : A C B D E Hash: 1 2 1 1 3 Hỡnh 2.4

Bảng băm dựng phương phỏp nối kết hợp nhất

Càiđặt bảng băm dựng phương phỏp nối kết hợp nhất

ạ Khai bỏo cấu trỳc bảng băm

#define NULLKEY –1 #define M 100

/*---M la so nut co tren bang bam, du de chua cac nut nhap vao bang bam M la so nut co tren bang bam, du de chua cac nut nhap vao bang bam

--- */key next key next NULL -1 NULL -1 … .. NULL -1 0 NULL -1 1 A M-1 2 C -1 3 E -1 … … … M-2 D -1 M-1 B M-2

//Khai bao cau truc mot nut cua bang bam typedef struct

{

int key; //khoa cua nut tren bang bam int next;

//con tro chi nut ke tiep khi co xung dot }NODE;

//Khai bao bang bam

typedef NODE HASHTABLE[M]; int avail;

/* ---bien toan cuc chi nut trong o cuoi table duoc cap nhat khi co xung dot

Một phần của tài liệu giáo trình cấu trúc dữ liệu 2 (Trang 39 - 40)