Professional Documents
Culture Documents
Chuong 5 - Tu Dien
Chuong 5 - Tu Dien
Chương 5
Tự điển
• Khái niệm
• Cài đặt tự điển bằng mảng
• Cài đặt tự điển bằng bảng băm
2
TỰ ĐIỂN
3
CÀI ĐẶT TỰ ĐIỂN BẰNG MẢNG
• Khai báo
#define MaxLength ... //So phan tu toi da
typedef ... ElementType; //Kieu du lieu
typedef int Position;
typedef struct
{
ElementType Data[MaxLength];
Position Last;
} SET;
4
CÀI ĐẶT TỰ ĐIỂN BẰNG MẢNG
• Bảng băm đóng lưu giữ các phần tử của tự điển ngay trong mảng.
• Bucket thứ i chứa phần tử có giá trị băm là i.
• Nếu có nhiều phần tử có cùng giá trị băm, chiến lược băm lại
(rehash strategy) được sử dụng để giải quyết sự đụng độ.
0 20
Chỉ số 1
2
3 Hàm băm: H(x)=x%B
4 34
5
6 26
Ví dụ hàm băm lại tuyến tính
… Hi(x)=(H(x)+i) mod B
B-1 (9) 19
10
Bucket
BĂM ĐÓNG
• Khai báo
#define B 100
#define Deleted –1000
//Gia dinh gia tri cho o da bi xoa
#define Empty 1000
//Gia dinh gia tri cho o chua su dung
typedef int ElementType;
typedef int Dictionary [B];
11
BĂM ĐÓNG
0 20
Chỉ số 1 E
29
2 E H(x)=x%B
3 E
4 34
Ví dụ hàm băm lại tuyến tính
5 E
Hi(x)=(H(x)+i) mod B
6 26
i=0 H(29) = 9
… E
i=1 H(29) = 0
E
i=2 H(29)=1
B-1 19
13
BĂM ĐÓNG
0 20
1 29
2 12 i=0 H(30) = 0
3 D
30 i=1 H(30) = 1
4 34 i=2 H(30)=2
5 E i=3 H(30)=3
6 26
… E
E
B-1 19
14
BĂM ĐÓNG
||(L.Data[(P+i)%B]==Empty)
Found = 1;
else i++;
return (L.Data[(P+i)%B] == X) ;
15
}
BĂM ĐÓNG
0 20
1 29
2 12
i=0 H(30) = 0
3 30
Deleted i=1 H(30) = 1
4 34
i=2 H(30)=2
5 E
i=3 H(30)=3
6 26
… E
E
B-1 19
17
BĂM ĐÓNG
• Khai báo
#define B ...
typedef ... ElementType;
typedef struct Node
{
ElementType Data;
Node* Next;
};
typedef Node* Position;
typedef Position Dictionary[B];
19
BĂM MỞ
20
BĂM MỞ
24