.
, ( ) ( domaintype ) ( ) , rangetype (, domaintype rangetype ). , d domaintype r rangetype , M(d) = r.
, square(i) = i2, Pascal. , d M(d).
, , , .
:
1. MAKENULL(M). .
2. ASSIGN(M, d, r). M(d) r , M(d) .
3. COMPUTE(M, d, r). true r M(d), , false .
, . Pascal , 1..100 17..23, , , 'A'...'Z", , , , , . , crypt () 'A'...'Z' , , r1() .
, , rangetype "". , crypt, , , 'A'...'Z '?' "".
MAPPING () :
Type
MAPPING = array[domaintype] of rangetype;
(d1,r1), (d2, r2),..., (dk, rk), d1, d2 dn - , a r1, r2,..., rk , rf; (t = 1, 2,..., k). .
MAPPING elementtype,
Type
elementtype = record
domain: domain type
range: rangetype
End;
MAPPING , LIST ( elementtype), , .
:
1. ?
|
|
.
3. ?
.
, . "" . , . INSERT, DELETE MEMBER DICTIONARY ().
.
, ,
1,..., N N .
. , , . , : ; ( ) ( ).
:
1. ?
2. ?
, , - . : , - , , . . , , .
, . , . , , ( ). . , , - . 1, .
.
, DataRecord 11- .
struct DataRecord
{
int key;
int data;
};
- HF 11, 0-10.
HF(item) = item.key % 11
. , .
|
|
: {54,1}, {77,3}, {94,5}, {89,7}, {14,8}, {45,2}, {76,9}
, . , HF({54,1}) = 10, Table[10]. 89 45, 1.
{89,7} Table[1]. {45,2} , Table[1] . . Table[2]. 76 . 10 , . , Table[4]. 13, .. 1,9 .
. (bucket) , - . (chaining with separate lists).
, . , - .
DataRecord - HF.
: {54,1}, {77,3}, {94,5}, {89,7}, {14,8}, {45,2}, {76,9}
HF(item) = item.key % 11
. 30 ( ) , .
, , 9, .. 1,3 .
, , . , , , . . .
: