Êý¾Ý½á¹¹ µÚ°ËÕ ²éÕÒ±í ÏÂÔØ±¾ÎÄ

{j=1£»printf£¨¡°\\n¡±£©£»

while£¨h[j]!=null£© // Éè¹þÏ£±í³õʼֵΪnull

{if£¨ord£¨h[j]£©==i£©// ord£¨£©È¡¹Ø¼ü×ÖµÚÒ»×ÖĸÔÚ×Öĸ±íÖеÄÐòºÅ printf£¨¡°%s¡±£¬h[j]£©£»j=(j+1)% n£» }}}

£¨2£©int ASLHash£¨rectype h[ ]£©

// ÇóÁ´µØÖ·½â¾ö³åÍ»µÄ¹þÏ£±í²éÕÒ²»³É¹¦Ê±µÄƽ¾ù²éÕÒ³¤¶È {int i,j£»count=0£»//¼Ç²éÕÒ²»³É¹¦µÄ×ܵĴÎÊý

LinkedList p£» for£¨i=0;i¡Ü26£»i++£©

{p=h[i]£»j=1£»//°´ÎÒÃÇÔ¼¶¨£¬²éÕÒ²»³É¹¦Ö¸µ½¿ÕÖ¸ÕëΪֹ¡£ while£¨p!=null£©{j++£»p=p->next£»} count+=j£» }

return £¨count/26.0£©£» }

24£®[ÌâÄ¿·ÖÎö]·ÇÁãÔªËØ¸öÊýÊÇ100£¬¸ºÔØÒò×ÓÈ¡0.8£¬±í³¤125×óÓÒ£¬È¡pΪ127£¬É¢ÁеØÖ·Îª0µ½126¡£¹þÏ£º¯ÊýÓÃH(k)=(3*i+2*j) % 127£¬i£¬jΪÐÐÖµºÍÁÐÖµ¡£ #define m 127 typedef struct

{int i£¬j£»datatype v;}triple£» void CreatHT£¨triple H[m]£©

//100¸ö·ÇÁãÔªËØÉú³ÉÏ¡Êè¾ØÕóµÄ¹þÏ£±í£¬±íÖÐÔªËØÖµ¾ù³õʼ»¯Îª0¡£ {for£¨k=0£»k<100£»k++£©

{scanf£¨&i,&j,&val£©£»//ÉèÔªËØÖµÎªÕûÐÍ h=(3*i+2*j)% m£» //¼ÆËã¹þÏ£µØÖ·

while£¨HT[h].v!=0£©) h=(h+1) % m; //ÏßÐÔ̽²â¹þÏ£µØÖ· HT[h].i=i£»HT[h].j=j£»HT[h].v=val£» //·ÇÁãÔªËØ´æÈë¹þÏ£±í }

}//Ëã·¨CreatHT½áÊø

datatype Search£¨triple HT[m]£¬int i£¬int j£©

//ÔÚ¹þÏ£±íÖвéÕÒϱêΪi£¬jµÄ·ÇÁãÔªËØ£¬²éÕҳɹ¦·µ»Ø·ÇÁãÔªËØ£¬·ñÔò·µ»ØÁãÖµ¡£ {int h=(3*i+2*j) % m£»

while ((HT[h].i!=i || HT[h].j!=j) && HT[h].v!=0) h=£¨h+1£©% m£» return £¨HT[h].v£©£» }//Search

25£®[ÌâÄ¿·ÖÎö] ±¾Ìâ¹þÏ£º¯ÊýH£¨key£©£¬ÓÃÏßÐÔ̽²â½â¾ö³åÍ»£¬¿Õµ¥ÔªÓÃEMPTY£¬É¾³ý±ê¼ÇÓÃDELETED£¬Õ¼Óõ¥ÔªÓÃINUSE£¬ÆäËü¾ù·ûºÏ¹þÏ£±í±ê×¼²Ù×÷¡£ £¨1£©int Search(rectype HT[]£¬int m£¬datatype key£©

//ÔÚ³¤¶ÈΪmµÄ¹þÏ£±íHTÖвéÕҹؼü×Ökey£¬Èô²éÕҳɹ¦£¬·µ»Øtrue£¬·ñÔò·µ»Øfalse¡£

{i=H£¨key£©£» // ¼ÆËã¹þÏ£µØÖ·

if£¨HT[i]==EMPTY£©return £¨false£©£» //²éÕÒʧ°Ü else if£¨HT[i]== key£©return £¨true£©£» else {j=(i+1)% m£» //ÐγÉ̽²âÐòÁÐ while£¨j!=i£© //ÖÁ¶àÑ­»·¹þÏ£±í³¤

{if£¨HT[j]==key£© return £¨true£©£» //²éÕҳɹ¦ else if£¨HT[j]==EMPTY£©return £¨false£©£»//²éÕÒʧ°Ü

j=£¨j+1£©% m£»

}

return £¨false£©£»//²é±é¹þÏ£±í£¬Î´²éµ½¸ø¶¨¹Ø¼ü×Ökey

}//else

//½áÊøSearch

£¨2£©int Insert£¨rectype HT[]£¬int m£¬datatype key£© //ÔÚ³¤ÎªmµÄ¹þÏ£±íÖвåÈë¹Ø¼ü×Ökey {i=H£¨key£©£»//¼ÆËã¹þÏ£µØÖ·

if£¨HT[i]==EMPTY || HT[i]==DELETED£© //ÈôHT[i]¿Õ»òɾ³ý±ê¼Ç¡£ {HT[i]=key£»return £¨true£©£»} //²åÈë³É¹¦ else //̽²â²åÈëÔªËØµÄÉ¢ÁеØÖ· {j=(i+1)% m£» while£¨j!=i£©

{if£¨HT[j]==EMPTY || HT[j]==DELETED£©

{HT[j]=key£»return £¨true£©£»} //ÕÒµ½ºÏÊʹþÏ£µØÖ·£¬²åÈë j=£¨j+1£©%m£» }

return £¨false£©£»//ÎÞ¿ÕÏйþÏ£¿Õ¼ä£¬²åÈëʧ°Ü }

}//½áÊøInsert

£¨3£©int Delete(rectype HT[]£¬int m£¬datatype key£© //ÔÚ³¤ÎªmµÄ¹þÏ£±íHTÖУ¬É¾³ý¹Ø¼ü×Ökey

{i=H(key)£» //¼ÆËã¹þÏ£µØÖ·

if£¨HT[i]==key£©//²éµ½¹Ø¼ü×ÖΪkeyµÄ¹þÏ£µØÖ·

{HT[i]=DELETED£»return £¨true£©£»} //ÖÃɾ³ý±ê¼Ç¡£ else //Ðγɹþϣ̽²âµØÖ·£¬²éÕҹؼü×Ökey

{j=£¨i+1£©% m£»

while£¨j!=i£©

{if£¨HT[j]==EMPTY£© return £¨false£©£» //Î޹ؼü×Ökey else if£¨HT[j]==key£©{ HT[j]==DELETED £»return £¨true£©£»}

j=£¨j+1£©% m£»

}

return £¨false£©£»//±íÖÐÎ޹ؼü×Ökey }//else

}//Ëã·¨Delete½áÊø 26£®#define m 11 typedef struct node

{datatype key£» //¹Ø¼ü×Ö

struct node *next£»//Á´Ö¸Õë }Lnode£¬*LinkedList£»

typedef datatype int£»

typedef struct node *HLK; void Creat£¨HLK HT[m]£©

//ÓÃÁ´µØÖ··¨½â¾ö³åÍ»£¬¹¹ÔìÉ¢ÁÐ±í£¬É¢Áк¯ÊýÓÃH£¨key£©=key % 11

{for£¨i=0£»i

for£¨i=0£»i

p=£¨LNode*£©malloc£¨sizeof £¨LNode£©£©£»

p->key=x£»p->next=HT[j]£»HT[j]=p£»//½«²åÈë½áµãÁ´ÈëͬÒå´Ê±í } }//Creat

²éÕҳɹ¦Ê±µÄƽ¾ù²éÕÒ³¤¶ÈASL=12/9¡£

27£®[ÌâÄ¿·ÖÎö] ±¾ÌâʵÖÊÉÏÊÇÅÅÐòÌ⣬ÒòÉæ¼°µ½Ë³Ðò±íºÍË÷Òý±í¶ø·ÅÔÚÕâÀ˳Ðò±íÎÞÐò£¬Ë÷Òý±íÓÐÐò¡£ÓÉ˳Ðò±íÖеĹؼü×Ö¼°ÆäÏÂ±êµØÖ·×é³ÉË÷Òý±íÖеÄÒ»Ï˳Ðò±íÓÐm¸ö¼Ç¼£¬Ë÷Òý±íÓ¦ÓÐmÏî¡£½¨Á¢Ë÷Òý±íÒ˲ÉÓá°Ö±½Ó²åÈëÅÅÐò¡±£¬ÕâÑù²ÅÄÜÔÚ˳Ðò±íÓÐÐòʱ£¬Ëã·¨¸´ÔÓ¶È´ïµ½×îºÃO(m)¡£

#define m ˳Ðò±íÖмǼ¸öÊý typedef struct node {keytype key£»//¹Ø¼ü×Ö

int adr£» //¸Ã¹Ø¼ü×ÖÔÚ˳Ðò±íÖеÄϱê }idxnode£» //Ë÷Òý±íµÄÒ»Ïî typedef struct node {keytype key£» //¹Ø¼ü×Ö

anytype other£»//¼Ç¼ÖÐµÄÆäËüÊý¾Ý }datatype

void IndexT(idxnode index[m+1],datatyp seq[m+1]) //¸øÓиöm¼Ç¼µÄ˳Ðò±íseq½¨Á¢Ë÷Òý±íindex {index[1].key=seq[1].key; index[1].adr=1; for (i=2,i<=m,i++) {j=i-1;

index[0].key=seq[i].key; //¼àÊÓÉÚ while(index[j].key

{index[j+1]=index[j]; j--;}

index[j+1].key=index[0].key; //¹Ø¼ü×Ö·ÅÈëÕýȷλÖà index[j+1].adr=i; //µÚi¸ö¼Ç¼µÄϱê } }//IndexT