0\0\ 700 --
 0′?4????UY??
l M-?1R><	?1R1k"??NNc1R?l	1R
l |?1R><	?1R1k"??`	?fc?
l 
?à><	?1R1k"?
E??E??
7.1 
? Vé
7.2 M-?1R
7.3 |?1R
7.4 
?à><
7.1 
? Vé
? Vé
1R>< *üb1R,XDB2?L?	ü/?1R><?1
R><+	à?2O
_,XDB2??êA?)?X??
M-?1R>< 81	?í1R><Eˉ> V??/??0?
? 1?ü1R><1,?¤t(Mn,XDB2?	úü1R
><è? 2??2?¤t(Mn2?,X	?/?2?èí/?E-2O
1R>< M-?1R>< ?M-?1R><ü1RE?/?1R
>< Dá	¥*ó	?ê?íM-?1R><Eˉ> ,X1R?0/?
 M-?1R ?
|?1R>< 81ü1RE?/?	?1ú1R><á,
ü,XDB2?|9èê5ù¢1R><?L8¤tDB
2?èí/?E-2O1R>< |?1R>< ?|?1R><ü1
RE?/?1R><	?6??	¥*ó	?ê?í|?1R><Eˉ> 
,X1R?0/? |?1R ?
GK+ DB2?,X¤tDBNM??6??A?
DB2??êA?)?,XGK+è	G!£t2?,XGK+
fá,ì	àè?à/?E-/?GK+ GK+ ×811R
><¤o2?,XGK+,ì	àè/?E-/?GK+  ?G
K+ ?_VèJê> ?,X?	?GK+è5à§	á
 ?GK+?
1R üDB2?L?	ü1R$μC?¤/?5ê,XDB
2?,XE?/?/? 1R ??1T	)è?*ü,X1R5ê
 3GK+1b¤t4-n  ′èü1R><e2?GK+1
b4-n,XDB2??êA?)??81><,üE-,X
A?)èí/? 1R?s è!8ê,X1R4§ph4-?RA?
),X<F?μCê?/RA?),X,|!5B×81><á
,üGK+1b4-n,XA?)èí/? 1Rá?s è!8
ê1R,X4§p	?14-??t0NA?)ê0N?J\?81Y
GK+1Rè1R4§p?,X×81Y ?GK+1
Rè4§p	?6??tA?)è	G4§p	?6?á??
1R><,X,|4§X 1R><?/?M2&I#,XDB
4§Xèíbá	à,X,|4§XèJ1R?"?á	à?Z
¤P?1REózèYê?G?*ü?o(M!^,X,|4§X? 
0′ú?4?14??4§X??
_4§X	?
?à><4§X,|
4§X,X	?/?1R1k"??
1R1k"?,XêKè)[ 1RE?/?,X?U?0GK
+,X!¨EWè1E?1  3G
!¨EW ?D  ′9>5G£1R1k
"?,XêKè)[?
7.2 M-?1RM-?1R
!7V 0′1 ?8VE??M-?1R?üM-?1R
><TEˉ> ,X1R?0èü1R><1R$μC?5ê,XD
B2?,X,|!5Bê	?/?2?? 8VúA|A?14??4§
X></,XM-?1R><	?,ìh,X1R1k"??
7.2.1 NNc1R
1. NNc1R,X
? ??
NNc1R?/??1T	),X1R?"??J
? ??
ú1R><0?t4??><è	?1NNc><è3	?1
Jò><èq ?*ü1R5ê4-n,Xa1R><DB
2?,XGK+Eˉ> !¨EWè81¤tA?),XGK+a
4-n,ì1èí1R?sèE¨2A1A?),X,|!5Bè
	?è81,è?	a?tA?)èJGK+a4-n
á,ì1èí1RBùèE¨21RBù???
2. NNc><,XNNc1R
?M6NNc><,X2O
_n?
#define  MAX_NUM  100       //*übn><,XKSz
typedef struct elemtype{
keytype key;
anytype otheritem;
}Se_List[MAX_NUM],Se_Item;
A?ü1R><èDB2?tD n
? n<MAX_NUM?èJú?,üD4?,X??	?G£
a[1]~a[n]?
?M6?à4-?NNc1R,X`H1k"??
int seq_search (Se_List aè keytype k)
{//üNNc><1RGK+1b k,XA?)è
//811R?sèE¨2A1A?),X!5B??c	?è	úíE¨2 0
i=1;
while (i<=n && a[i].key != k)  i++;
if (i<=n) retrun i;
else return 0;
}
Eˉ1k"??
int seq_search2 (Se_List aè keytype k)
{ //A?5BZ,¥??
?,XNNc><1Rè1RGK+1b?n
 k,XA?)è
//811R?sèE¨2A?),!5B,X??è	úíE¨2 0
i=n ;
a[0].key=k ;
while ( a[i].key != k) i--;
return ( i ) ;
}
3. Jò><,XNNc1R
Jò><,XNNc1R?ú1R><04??><J1Jò
?,|4§X,|è*üNNc1R?"?1Ra?nGK+
,ì1,XA?)?
Jò><,X2O
_nV?/?
typedef struct node {
keytype key; //4§&?,XGK+2O
_
anytype otheritem; //4§&?,XJa?ú
struct node  *next; //?	?Jò><4§&?,X?J}Link_Node,*Link;
ú1R><,XDB2?*üE-/?4§X,X4§&?></è
J1?	?4§&?,X?J\?A??
íJò><r)?NN?1RüY4§&?,XJò?1R
><1RGK+1b4-n,XA?)è811R?sè
E¨2?	?,ìh4§&?,X?J\è	úíE¨20N?J\?
Link_Node  *link_search (Link h , keytype k)
{//linkú4§&?Jò><,X?J\è1RGK+1
b k,XA?)è
//1R?sèE¨2?	?R,X4§&?,X?J\è1R
BùE¨20N?Jp=h->next;
while ((p!=NULL) && (p->key!=k)) p=p->next;
return  p;
}
NNc1R1k"?1T	)èí><,X4§X′?)?U"×
;> )[EW"è?J' nEW?êèápG?*üE-/?1R
?"??
7.2.2 l	1R
1. l	1R,X
? ??
l	1R?U"1R><*üNNc,|4§X,è	?D
B2?YGK+Yc?	cêLZc?f?è3Aè
l	1R	?E?*übíYcNNc><Eˉ> 1R?
l	1R,X
? ???Oj1Ht1R><0
1R8×èè*ü1R5ê4-n kaKè!5B4§&?,XG
K+!¨EWè81,ì1èí1R?sè	úíè
B!¨EW4§
p4y?1R8×èèVp k,X?bGK+,Xè
B1
R><,XYc?	?-11R,XDB2?	?Y	?6?ü><,X!
	F?úè	Güo	F?ú$><è14?4áío$><Eˉ
> l	1R×81 k,X?bKè4§&?,XGK+èí	?
1?n1R,XDB2?	?Y	?6?ü><,X	a	F?úè	G
ü	?	F?ú$><è1hA14?4áí	?$><Eˉ> l	
1R?!£Eˉ> ? ?l	1Rè?U1R?sè4§31
Rè?Uú1R8×è4y??	èV!8G?áè,è1R
?sê1R8×è4y?0N	G1RBù!6?
2. l	1RE?/?/_
A?Y1Yc?	c?NNc><DB2?,XGK
+c?? 8,18,27,42,47,50,56, 68,95,120?è*ül	1
R?"?1RGK+ 27
` 59,XDB2??
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
8 18 27 42 47 50 56 68 95 120
k<a[mid].keyèè? high low mid high
k>a[mid].keyèè? low low mid hig
k=a[mid].keyè1R?
s low hig
mid
3. l	1R1k"?
A?1R><,üD4? a,X a[1]~a[n]èè	cè
1RGK+ k?
l	1R,X?U!9Px?
? 1?5B??1R8×è? low=1è high=n;
? 2?"1R8×èKèNM? mid=(low+high)/2
? 3?ú?n,XGK+ kaKèNM a[mid].key!¨EW
81,ì1è1R?sèR,XDB2?!8ê mid ?
	?,X!5B×
81?bè1R8×è,X"0?DB2??J\ lowá	?è
P?0?DB2??J\ highè? mid-1;
81?bè1R8×è,XP?0?DB2??J\ highá	?è
"0?DB2??J\ lowè? mid+1;
? 4?G?á!9Px? 2??? 3?,è1R?sê1R
8×è0N? low>high?è	G1RBù!6?
? 5?Vp1R?sèE¨2R2?,X,!5Bè
	G'!,XKèNM!5B?J\ mid×	úíE¨21RBù?
??
l	1R,X`H1k"?V??
int bin_search (Se_List a, keytype k)
{
low=1;  high=n; //5B??1R8×è,X"?P?0?
?Jwhile (low<=high)
{  mid=(low+high)/2; //Au1kKèNM!5B
if (k==a[mid].key)  break;              //Rè4§3~)?
else  if (k< a[mid].key)  high=mid-1; //4-n k?
else   low=mid+1;           //4-n k?
}
if (low<=high)  return mid ; //1R?s
else return 0 ; //1RBù
}
7.3 |?1R|?1R
7.3.1 `	?fc?
`	?fc??/?*ü,X|?1R><è?M6Oj
4-?W,XM2E?&6??
`	?fc??é`	??èWê5ù0Nèê5ùK
YV??Bü?
? 1???M24?0?4§&?81Yo=$èíA14§&?,XG
K+?bJo=$4§&?,XGK+?
? 2???M24?0?4§&?81Y	?=$èíA14§&?,XG
K+?bJ	?=$4§&?,XGK+?
`	?fc?3	?1*üE?&,X6?nè	G`	?f
c??é?èWê5ù0Nèê5ùKYV??Bü?
? 1?81W,Xo$?M20NèíJo$?Y4§&?,X
GK+
?bJ
4§&?,XGK+?
? 2?81W,X	?$?M20NèíJ	?$?Y4§&?,X
GK+
?bJ
4§&?,XGK+?
? 3?W,Xo	?$?F?`	?fc??
_Vè+GK+c?
? 62,15,68,46,65,12,57,79,35?X?,X?é`	?fc?
Vò 7-4/?
ò 7-4
VpíTE?`	?fc?Eˉ> 
F!	Z	?1k?
tGK+Ycc?? 12, 15, 35,46, 57,62,65,68,79?èE-
`	?fc?,X?tG??U(MUè3!7+!8úJ/?
 3`	?fc?  ′?
7.3.2 `	?fc?,X1R
`	?fc?,X4§Xn	?,???éM20N`	?
fc?
4§&?,XGK+?bJo$?TY4§&?
,XGK+è5à?bJ	?$?TY4§&?,XGK+
è1ü`	?fc?1R?tGK+ k,X4§
&?,X
? ???*ü4-n ka
4§&?GK+!¨EWè
Vp k?b
4§&?,Xèí?UR,X4§&?	?	?6?üo$?
è14?4áüo$?1Rè	úíú4?4áü	?$?
1Rèq!8?"?è1R?	?è7?,è1R?sê1R
Bù!6?`	?fc?1R,XE?/?£E?V??
? 1?81`	??0N?èí1RBùè
? 2?ú4-n ka
4§&?,XGK+!¨EWè81,ì
1èí1R?sè
? 3?81
4§&?,XGK+?b4-n kèíüo$
?4?4áe2?è
? 4?	úíèü	?$?4?4á1R?
n`	?fc?,XJò?,|4§X,X2O
_nV??
typedef struct node {
keytype key;
anytype otheritem;
struct node *lchild×
struct node *rchild;
}Bin_Sort_Tree_Node,*Bin_Sort_Tree×
`	?fc?1RE?/?,X£E??tE?&E?/?è81
*üJò?,|4§X,|èJ1R?0,XE?&1k"?V?
/?
Bin_Sort_Tree_Node *bt_search(Bin_Sort_Tree bt ,
keytype k)
{  //ü
?J\ bt,X`	?fc?T1R?tGK+ k,X
4§&?è
//811R?sE¨2?	?A14§&?,X?J\è	úíE¨20N?Jif ( bt = NULL ) || ( bt -> key == k ) return bt;
else if (k< bt -> key) return bt_search ( bt -> lchild , k );
//üo$?e2?
else  return bt_search ( bt -> rchild , k );
//ü	?$?e2?
}
E-tE?/?3	?1*üM2E?&1k"?r)?è1k"?£E?V??
Bin_Sort_Tree_Node *bt_search1(Bin_Sort_Tree bt ,
keytype k)
{
p = bt;  //?J\ p?	?
4§&?èe2?¢
4§&???
while ( p != NULL && p ->key != k )
{
if (k <p -> key )  p = p -> lchild;
else  p = p -> rchild;
}
return ( p);
}
7.3.3 `	?fc?,X|9
ü?é`	?fc?|9?t4§&?	?1*ü?tE?&
,XE?/?r)?è	G?81`	?fc?0Nèí?4§&?0
`	?fc?,X
4§&?×	úíè814-n4§&?,XGK+
?b
4§&?GK+èí|9üo$?T×814-n4§
&?,XGK+?b
4§&?,Xèí|9ü	?$?T?
?M6`	?fc?|9?0,XE?&1k"??
void bt_insert1(Bin_Sort_Tree *bt , Bin_Sort_Tree_Node
*pn)
{ //ü1 bt
,X`	?fc?T|9?t+?J\ pn?	?,X
?,X4§&?
if ( *bt =NULL)  *bt = pn ;
else  if ( *bt -> key > pn->key ) bt_insert 1( &(*bt ->
lchild) , pn ) ;
else  if ( *bt -> key < pn -> key )  bt_insert1 ( &(*bt -
> rchild) , pn) ;
}
E-t1k"?3	?1*üM2E?&,X6?r)?èV?/?
void bt_insert 2(Bin_Sort_Tree *bt , Bin_Sort_Tree_Node
*pn)
{
p = bt;
while ( p != NULL && p -> key!= pn->key)
{  q = p;
if ( p ->key > pn->key )   p = p -> lchild;
else  p = p -> rchild;
}
if ( p =NULL )   {
if ( q ->key > pn -> key ) q ->lchild = pn;
else  q -> rchild =pn ->key;
}
}
y*ü`	?fc?,X|91k"?è	?1\??
r)?
??`	?fc?,X?0èJ
? ???+?é0N`
	????è4£E??2??,X1R|9?0*ó??é`	?
fc??
_Vè+4§&?GK+c?? 62, 15, 68, 46, 65, 12 ,
57 , 79, 35?XE?`	?fc?,XE?/??¢0N`	???
?èq ?ú!£t4§&?|9`	?fc?|9èü|
9!£t4§&?êF?¢
4§&???e2?|9!5BèR
|9!5B	aèú?4§&?0	ê$4§&?|9è4£E? 9 ?,X
1R
`|9?0è??+E- 9t4§&?4??,X`	?fc
??
??`	?fc?,X1k"?V??
Bin_Sort_Tree_Node *bt_bulid (Bin_Sort_Tree a , int n)
{  //üD4? a,X a[1]~a[n]	),-ú?UX?`	?fc?
,X nt4§&?Y?
bt = NULL ;
for ( i =1; i <= n;i++)
{
p = (Bin_Sort_Tree_Node *)malloc (sizeof
(Bin_Sort_Tree_Node));
p ->key =a[i].key;
p -> otheritem= a[i].otheritem;;
p -> lchile = NULL;
p -> rchile = NULL;
bt_insert1( &bt , p);
}
return ( bt) ;
}
7.3.4 `	?fc?,X?L8
?M6úˉ/???A|A???V).B±¢`	???
L8?t4§&?	aèá?E
?`	?fc?,X?Bü?
? 1?81?U?L8,X4§&?	ê$4§&?è	?1,èyEˉ> 
?L8?
? 2?81?U?L84§&?Y	?$?è′o$?è	?*ü
J	?$?,X
4§&?	a·?U?L84§&?,X!5B?
? 3?81?U?L84§&?Yo$?è′	?$?è	?*ü
Jo$?,X
4§&?	a·?U?L84§&?,X!5Bèa!9PxB
2O?
? 4?81?U?L84§&?,Xo	?$?
M20NèíOjR
?U?L84§&?,X	?$?GK+??,X4§&??	G$
??o4§&??èy*üTM6,X?"?úA14§&?¢	?$?
?L8èJ*üW	a·?U?L84§&?,X!5BèE-?)ú,X
4§p?n6?ó±A??L84§&?	a`	??,X?Büá	??
7.4 
?à><
?à><
7.4.1 
?à><,XVé
!M6?4?,XM-?1R><
`|?1R><,X(M&??
Z¢1R><RGK+1b¤t,XA?)èF??U
4£E??2??,XGK+!¨EWè1.BnY1A?),X,|!
5Bê1RBùè1RL?êKèa!¨EW ?DYG?
VpúA?),X,|!5BaW,XGK+Kè?0??
t.Bn,XG2? HèS!£tGK+
`?t?,X,|!
5Bíhèü1Rêè	?L??U
BíhG2?Au1k?4-n
,XGK+ kíh,X H(k)è	?1kA?),X,|!
5BèE- 8Vú?U?4?,X
?à><1R?"?,X
? ?
??
?à?D ?àúA?),XGK+aA?),X,|!
5BíhCK9,XG2? H/?
?à?Dè H(k),X4§p/?
?à
?
?à>< 
B
?à?D?0?,X><èJ
? ??
?1A?),XGK+7?	?G£è
B
?à?DèAu
1k?íh,X
?à
èJü!8,|A1A?),XY??'
íA?)Eˉ> 1Rêèa
B4-n,XGK+è*ü	à?
t
?à?DAu1k?4-nGK+íh,X,|
èLc
	aEˉ> A?K??1
?à><	G?/?,|6?è	??
/?1R?"?èE?úE-/?1R?"?/? 
?à1R ?
?0U Yê	?6???)?á	à,XGK+J
?à?D
Au1k,X
?à
,ì	à,X??è'
5à	à?t,|!5Bá
	?6?,|?tA?)è?àúE-/???/??0UèKY
,ì	à?D,XGK+/?	àA??ürLh*ü?
0Uá	?6?`<FS!,Xè?àE?E?rCé4§?Z?/?
£??0U	??·??0U,X?"???M6?àú1T?U
?4?
???
7.4.2 
?à?D,XXE?
?0?
?à><èGKXE?
?à?D?J	sí
	?6?
S???4?GK+,X
?à
?
ú×üH
t
0NKèè	G*ü??GK+0
?à?D,X7?	?
G£JAu1k4§pLcú×è1?£??0U,X	¥*ó	?6?
??
*ü,X
?à?D,XXE??"?Y?
1.,èyn
"?
	aGK+êGK+,X¤t4???D
?à
?
	G
H(key)=key ê H(key)=a*key+b
J aè bDèA×H aa b,X	?1S
?à
	a8×èa,|0NKè8×è?7è?
2.BüD	a-"?
	aGK+>¤tá?b
?à><><KS n,XBüD mHL8
	ak-D
?à
?	G
H(key)=key % m  (m<nèA?J n
?à><KS )?
BüD	a-"?Au1k1T	)èE?*ü8×è?èHD m
,XEY?\G??UèVpEY?á'è?{*óEW?	àA?è
S
?à><YEW?,X?0U?
3. G?	a"?
	aGK+G?	a,XKè′!
?à
?+bG
?	a,XKè′!Da	sGK+,X!£?!D+F?,ìGè
	??U	sGK+,Xú×Lc,Xè1G?	a,XKè′!
D0
?à
?n3Lcú×?
4. l	′"?
^GK+l	′?!D,ì	à,X′F?úè'
	a	aE-′
F?ú,X	′t0
?à
?üGK+!DEW?èè!£
?!TD+,Xú×
? 
?êèG?*ül	′"?èk,X
?à
!¨EW
??
7.4.3 ?·??0U,X?"?
*ü,X?)ú?0U,X?"?Y?
1. ?n
"?
'	¥*ó?0Uêèü?0U!5B,X!	aLE¥?R	?1
,A?),X0NK?	)?*ü!8"??·??0Uè?U{*ó?t
v#c?è"?-!8c?	??R	?1,A?),X0NK?	)
??1T	),Xv#c?{*ó?"?Eˉ> 4??v#è	G
'	¥*ó?0Uêè¢	¥*ó?0U,X,|!5B,X??t,|
!5B??q ?NNcv#0NK?	)?
2. Jò
"?
úYGK+	àA?,XA?)Jòy??t4??Jò
><èúJJòJòyü+
?à?D.Bn,X
?à
?
/,X,|	)?
3. a
?à"?
'	¥*ó?0Uêè*ü	o?t
?à?DaAu1k	o?t
?à
èVpa	¥*ó?0UèaS*ü	o?t
?à?
Dè,è7?á	¥*ó?0U!6?E-/??"??U"NX?UA?5B
?t
?à?D,Xc??
4. $v?	"?L8
? ,X,|	ê?/?
? ><?è
	oê?0??t@E$v?	?/?$v?><?è'	¥*ó?
0UêèA?)	?1,9E-t@E$v?	?
7.4.4 
?à><1R	?Júd
?à><,X1RE?/?a
?à><,XXE?E?/?
? ?
7èèíb4-n,XGK+ kèY';?><êA?n,X
?à?
D"k
?à
×81
?à
?!5B?YA?)èJ
èJGK+á1b4-n k,í
B?><êA?n,X?
0U?)ú?"?"k	àA?,X??
è,è"k,X
?à
?!5B0NK?êJA?),XGK+1b4-n
 k!6×Vp"k,X
?à
íh,XY,0NKè0N
K?èí1RBù×Vp"k,X
?à
íh,XY,0N
Kè,XA?)GK+1b4-n kèí1R?s?
TE?1RE?/?	?1£E?V??
? 1?Au1k?4-nGK+íh,X
?à
addr=H(k);
? 2? while( (addrá0N )&&(addrGK+ !=k))
Y?0U?)ú?"?"k??
 addr;
? 3?Vp (addr0N )èí1RBùèE¨2Bù
μC×
? 4?	úí1R?sèJE¨2
 addr×
ü?)ú?0U?"?,ì	à,X
?à><èJG
1Rê
KèèE?qC*b
?à><,X>??′$è
?à><,X>??′$
?
>??′$C^?è><?9,XA?)C^?è	¥*ó?
0U,X	?6????è	?è><??9,XA?)C^?è
a?A?)êè	¥*ó?0U,X	?6??C^?èí1Rê
Eˉ> GK+,X!¨EW ?DC^??
><?9,XA?)
D ¢=
?à><,XKSz


