Bảng băm với phương phỏp nối kết trực tiếp (Direct 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 29 - 30)

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

3.1.Bảng băm với phương phỏp nối kết trực tiếp (Direct chaining Method)

(Direct chaining Method)

Mụ tả: Xem hỡnh vẽ

Bảng băm được càiđặt bằng cỏc danh sỏch liờn kết, cỏc phần tử trờn bảng băm được “băm” thành M danh sỏch liờn kết (từ danh sỏch 0 đến danh sỏch M–1). Cỏc phần tử bị xung đột tại địa chỉ i được nối

kết trực tiếp với nhau qua danh sỏch liờn kết ị Chẳng hạn, với M =

10, cỏc phần tử cú hàngđơn vị là 9 sẽ được băm vào danh sỏch liờn kết i = 9. 11 31 51 30 50 60 2 12 42 23 33 53 4 14 45 55 65 16 26 46 37 67 87 28 78 49 59 89 71 81 73 93 86 96 72 95 0 1 2 3 4 5 6 7 8 9

Khi thờm một phần tửcú khúa k vào bảng băm, hàm băm f(k) sẽ xỏc định địa chỉ i trong khoảng từ 0 đến M-1ứng với danh sỏch liờn kết

i mà phần tử này sẽ được thờm vàọ

Khi tỡm một phần tửcú khúa k vào bảng băm, hàm băm f(k) cũng sẽ

xỏcđịnh địa chỉ i trong khoảng từ 0 đến M-1ứng với danh sỏch liờn kết i cú thể chứa phần tử nàỵ Nhưvậy, việc tỡm kiếm phần tử trờn bảng băm sẽ được qui về bài toỏn tỡm kiếm một phần tử trờn danh sỏch liờn kết.

Để minh họa cho vấn đề vừa nờu: Xộ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.

Hỡnh 2.3minh họa bảng băm vừa mụ tả. Theo hỡnh vẽ, bảng băm đó “băm” phần tử trong tập khoỏ K theo 10 danh sỏch liờn kết khỏc

nhau, mỗi danh sỏch liờn kết gọi là một HASHTABLE:

 HASHTABLE 0 gồm những phần tử cú khúa tận cựng bằng

0.

 HASHTABLE i(i=0 | … | 9) gồm những phần tử cú khúa tận

cựng bằng ị Để giỳp việc truy xuất bảng băm dễ dàng, cỏc phần tử trờn cỏc HASHTABLE cần thiết được tổ chức theo

một thứ tự, chẳng hạn từ nhỏ đến lớn theo khúạ

 Khi khởi động bảng băm, con trỏ đầu của cỏc HASHTABLE

là NULL.

Theo cấu trỳc này, với tỏc vụ insert, hàm băm sẽ được dựngđể tớnh địa chỉ của khoỏ k của phần tử cần chốn, tức là xỏc định được

HASHTABLE chứa phần tử và đặt phần tử cần chốn vào HASHTABLE nàỵ

Với tỏc vụ search, hàm băm sẽ được dựng để tớnh địa chỉ và tỡm phần tử trờn HASHTABLE tươngứng.

Càiđặt bảng băm dựng phương phỏp nối kết trực tiếp

ạ Khai bỏo cấu trỳc bảng băm #define M 100

typedef struct nodes {

int key;

struct nodes *next }NODE;

//khai bao kieu con tro chi nut typedef NODE *pHNODE;

/*---khai bao mang HASHTABLE chua M con tro dau cua MHASHTABLE

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