Ëã·¨Éè¼Æ¼°·ÖÎöʵÑéÖ¸µ¼Êé(2011)

ʵÑéÈý ¹é²¢ÅÅÐòµÄ·ÖÖβßÂÔÉè¼Æ£¨4ѧʱ£©

[ʵÑéÄ¿µÄ]

£±. ÊìϤ¶þ·Ö¼ìË÷ÎÊÌâµÄÏßÐԽṹ±íʾºÍ¶þ·Ö¼ìË÷Ê÷±íʾ; £². ÊìϤ²»Í¬´æ´¢±íʾÏÂÇó½â¶þ·Ö¼ìË÷ÎÊÌâµÄµÝ¹éËã·¨Éè¼Æ; £³. ͨ¹ýʵÀýת»», ÕÆÎÕ½«µÝ¹éË㷨ת»»³Éµü´úËã·¨µÄ·½·¨;

£´. ÕÆÎÕÓ¦Óõݹé»òµü´ú³ÌÐòÉè¼ÆʵÏÖ·ÖÖη¨Çó½âÎÊÌâµÄ³éÏó¿ØÖƲßÂÔ.

[ԤϰҪÇó]

£±. ÈÏÕæÔĶÁËã·¨Éè¼Æ½Ì²ÄºÍÊý¾Ý½á¹¹½Ì²ÄÄÚÈÝ, ÊìϤ²»Í¬´æ´¢±íʾÏÂÇó½â¶þ·Ö¼ìË÷ÎÊ

ÌâµÄÔ­Àí»ò·½·¨;

£². Õë¶ÔÏßÐԽṹ±íʾºÍ¶þ·Ö¼ìË÷Ê÷±íʾÉè¼ÆµÝ¹éËã·¨;

£³. ²Î¿¼½Ì²ÄºÍ¿ÎÌýÌѧÄÚÈÝ, ¸ù¾Ý½«µÝ¹éË㷨ת»»³Éµü´úËã·¨µÄÒ»°ã²½Ö轫¶þ·Ö¼ìË÷

µÝ¹éË㷨ת»»³ÉÏàÓ¦µÄµü´úËã·¨.

[Ëã·¨»ò³ÌÐòÉè¼Æ²Î¿¼]

ÏßÐԽṹ

int data[10]={ /* 10¸ö»¥ÒìµÄ¡¢ÎÞÐòµÄԭʼÕûÊý */ }; typedef struct { int s[100]; int top;} STACK;

int Partition(int *data, int low, int high)

¹¦ÄÜ: ½«data[low, high]½øÐпìËÙ·ÖÀà»®·Ö, ·µ»ØÊàÖá¼Ç¼¹Ø¼ü×ÖµÄλÖÃË÷Òý. int QSort1(int *data, int low, int high)

¹¦ÄÜ: ½«data[low, high]½øÐпìËÙ·ÖÀàµÄµÝ¹éËã·¨. int QSort2(int *data, int low, int high)

¹¦ÄÜ: ½«data[low, high]½øÐпìËÙ·ÖÀàµÄµü´úËã·¨. int BSearch1(int *data, int key)

¹¦ÄÜ: ÔÚdataÊý×éÖмìË÷keyµÄ¶þ·Ö¼ìË÷µÝ¹éËã·¨, ³É¹¦Ê±·µ»ØλÖÃË÷Òý, ·ñÔò·µ»Ø-1. int BSearch2(int *data, int key)

¹¦ÄÜ: ÔÚdataÊý×éÖмìË÷keyµÄ¶þ·Ö¼ìË÷µü´úËã·¨, ³É¹¦Ê±·µ»ØλÖÃË÷Òý, ·ñÔò·µ»Ø-1. Ê÷½á¹¹

typedef struct NODE{ int key; struct NODE *lch, *rch; }TNODE, *BT;

typedef struct Parameters { BT *t; int key; BT f; BT *p } PARA; typedef struct { PARA s[100]; int top;} STACK; int InsertBT(BT *t, int key)

¹¦ÄÜ: ÔÚ¶þ·Ö¼ìË÷Ê÷tÖвåÈë¹Ø¼ü×ÖΪkeyµÄÔªËØ, ³É¹¦Ê±·µ»Ø1, ·ñÔò·µ»Ø0.

int TSearch1(BT *t, int key, BT f, BT *p)

¹¦ÄÜ: ÓõݹéËã·¨ÔÚ¶þ·Ö¼ìË÷Ê÷tÖвéÕҹؼü×ÖΪkeyµÄÔªËØ, ³É¹¦Ê±·µ»Ø1, pÖ¸Ïò¸ÃÔªËؽڵã, ·ñÔòpÖ¸Ïò²éÕÒ·¾¶ÉÏ×îºóÒ»¸ö½Úµã²¢·µ»Ø0, fÖ¸ÏòtµÄË«Ç×, Æä³õʼµ÷ÓÃֵΪNULL.

int TSearch2(BT *t, int key, BT f, BT *p)

¹¦ÄÜ: Óõü´úËã·¨ÔÚ¶þ·Ö¼ìË÷Ê÷tÖвéÕҹؼü×ÖΪkeyµÄÔªËØ, ³É¹¦Ê±·µ»Ø1, pÖ¸Ïò¸ÃÔªËؽڵã, ·ñÔòpÖ¸Ïò²éÕÒ·¾¶ÉÏ×îºóÒ»¸ö½Úµã²¢·µ»Ø0, fÖ¸ÏòtµÄË«Ç×, Æä³õʼµ÷ÓÃֵΪNULL.

[ʵÑé²½Öè]

1. µ÷ÊÔÏßÐԽṹ±íʾϵĿìËÙ·ÖÀàÓë¶þ·Ö¼ìË÷µÝ¹é³ÌÐò, Ö±ÖÁÕýȷΪֹ; 2. µ÷ÊÔÏßÐԽṹ±íʾϵĿìËÙ·ÖÀàÓë¶þ·Ö¼ìË÷µü´ú³ÌÐò, Ö±ÖÁÕýȷΪֹ; 3. ´ý¸÷¹¦ÄÜ×Ó³ÌÐòµ÷ÊÔÍê±Ï, È¥µô²âÊÔ³ÌÐò, ½«³ÌÐòÕûÀí³É¹¦ÄÜÄ£¿é´æÅ̱¸ÓÃ.

[ʵÑ鱨¸æÒªÇó]

1. ²ûÊöʵÑéÄ¿µÄºÍʵÑéÄÚÈÝ; 2. ÌύʵÑé³ÌÐòµÄ¹¦ÄÜÄ£¿é;

3. ²ûÊö½«µÝ¹éËã·¨¸Äд³Éµü´úËã·¨µÄÒ»°ã·½·¨;

4. ÓÃÀàCÓïÑÔ²ûÊö·ÖÖη¨µÝ¹éÓëµü´úʵÏÖ³éÏó¿ØÖƲßÂÔ.

[˼¿¼ÓëÁ·Ï°]

1. ÔõÑùÓÅ»¯Óɵݹé³ÌÐò¸ÄдµÄµü´ú³ÌÐò?

2. Éè¼Æ¶þ·Ö¼ìË÷Ê÷µÄ¹¹ÔìÓë¼ìË÷µÝ¹é³ÌÐò, ²¢½«Æä¸Äд³ÉÏàÓ¦µÄµü´úËã·¨¡£

ʵÑéËÄ ¹þ·òÂü±àÂëµÄÌ°ÐÄËã·¨Éè¼Æ£¨4ѧʱ£©

[ʵÑéÄ¿µÄ]

£±. ¸ù¾ÝËã·¨Éè¼ÆÐèÒª,ÕÆÎÕ¹þ·òÂü±àÂëµÄ¶þ²æÊ÷½á¹¹±íʾ·½·¨; £². ±à³ÌʵÏÖ¹þ·òÂü±àÒëÂëÆ÷; £³. ÕÆÎÕÌ°ÐÄËã·¨µÄÒ»°ãÉè¼Æ·½·¨¡£

[ԤϰҪÇó]

1. ÈÏÕæÔĶÁÊý¾Ý½á¹¹½Ì²ÄºÍËã·¨Éè¼Æ½Ì²ÄÄÚÈÝ, ÊìϤ¹þ·òÂü±àÂëµÄÔ­Àí; 2. Éè¼ÆºÍ±àÖƹþ·òÂü±àÒëÂëÆ÷¡£

[²Î¿¼Êý¾ÝÀàÐÍ»ò±äÁ¿]

typedef ElemType char£» typedef struct node{ int w; int flag; ElemType c;

struct node *plink,*llink,*rlink; char code[m];

}Node;

Node *num[n], *root;

[²Î¿¼×Ó³ÌÐò½Ó¿ÚÓ빦ÄÜÃèÊö]

void SetTree( NODE *root )

¹¦ÄÜ: ´ÓÖն˶ÁÈë×Ö·û¼¯´óСn£¬ÒÔ¼°n¸ö×Ö·ûºÍn¸öȨֵ£¬½¨Á¢¹þ·òÂüÊ÷ void EnCode( Node *p )

¹¦ÄÜ: ÀûÓÃÒѽ¨ºÃµÄ¹þ·òÂüÊ÷£¬¶ÔÊäÈëµÄÕýÎĽøÐбàÂë void DeCode( void )

¹¦ÄÜ: ÀûÓÃÒѽ¨ºÃµÄ¹þ·òÂüÊ÷£¬½«ÊäÈëµÄ´úÂë½øÐÐÒëÂë

[ʵÑé²½Öè]

1. Éè¼ÆSetTreeµÄ²âÊÔ·½°¸ºÍ³ÌÐò,ÊäÈë²âÊÔÊý¾Ý,Ð޸IJ¢µ÷ÊÔ³ÌÐò,Ö±ÖÁÕýȷΪֹ; 2. Éè¼ÆEnCodeµÄ²âÊÔ·½°¸ºÍ³ÌÐò,ÊäÈë²âÊÔÊý¾Ý,Ð޸IJ¢µ÷ÊÔ³ÌÐò,Ö±ÖÁÕýȷΪֹ; 3. Éè¼ÆDeCodeµÄ²âÊÔ·½°¸ºÍ³ÌÐò,ÊäÈë²âÊÔÊý¾Ý,Ð޸IJ¢µ÷ÊÔ³ÌÐò,Ö±ÖÁÕýȷΪֹ; 4. ½«ÄãµÄ³ÌÐòÕûÀí³É¹¦ÄÜÄ£¿é´æÅ̱¸Óá£

[ʵÑ鱨¸æÒªÇó]

1. ²ûÊöʵÑéÄ¿µÄºÍʵÑéÄÚÈÝ; 2. ÌύʵÑé³ÌÐòµÄ¹¦ÄÜÄ£¿é; 3. ¼Ç¼×îÖÕ²âÊÔÊý¾ÝºÍ²âÊÔ½á¹û¡£

[˼¿¼Ìâ]

1.

ÊÔÖ¤Ã÷¹þ·òÂüÎÊÌâ¾ßÓÐÌ°ÐÄÑ¡ÔñÐÔÖÊ£»

ÊÔÖ¤Ã÷¹þ·òÂüÎÊÌâ¾ßÓÐ×îÓÅ×ӽṹÐÔÖÊ¡£

ʵÑéÎå KruskalËã·¨µÄÉè¼Æ£¨4ѧʱ£©

[ʵÑéÄ¿µÄ]

£±. ¸ù¾ÝËã·¨Éè¼ÆÐèÒª, ÕÆÎÕÁ¬Í¨ÍøµÄÁé»î±íʾ·½·¨; £². ÕÆÎÕ×îСÉú³ÉÊ÷µÄKruskalËã·¨; £³. »ù±¾ÕÆÎÕÌ°ÐÄËã·¨µÄÒ»°ãÉè¼Æ·½·¨; £´. ½øÒ»²½ÕÆÎÕ¼¯ºÏµÄ±íʾÓë²Ù×÷Ëã·¨µÄÓ¦ÓÃ.

[ԤϰҪÇó]

£±. ÈÏÕæÔĶÁËã·¨Éè¼Æ½Ì²ÄºÍÊý¾Ý½á¹¹½Ì²ÄÄÚÈÝ, ÊìÏ°Á¬Í¨ÍøµÄ²»Í¬±íʾ·½·¨ºÍ×îСÉú

³ÉÊ÷Ëã·¨;

£². Éè¼ÆKruskalË㷨ʵÑé³ÌÐò.

[²Î¿¼Êý¾ÝÀàÐÍ»ò±äÁ¿]

typedef NodeNumber int; /* ½Úµã±àºÅ */ typedef CostType int; /* ³É±¾ÖµÀàÐÍ */

typedef ElemType NodeNumber /* ʵÐÍ»òÈÎÒâÆäËüÔªËØÀàÐÍ */

typedef struct { int ElemType; int tag; }NODE;

typedef struct { CostType cost; NodeNumber node1, node2; }EDGE; NODE set[]={{1,-1},¡­,{n,-1}}; /* ½Úµã¼¯, nΪÁ¬Í¨ÍøµÄ½ÚµãÊý */

EDGE es[ ]={{values of e1},¡­,{ values of em}}; /* ±ß¼¯, mΪÁ¬Í¨ÍøµÄ±ßÊý */ EDGE st[n-1]; /* ×îСÉú³ÉÊ÷µÄ±ß¼¯ */

[²Î¿¼×Ó³ÌÐò½Ó¿ÚÓ빦ÄÜÃèÊö]

int Find(NODE *set, ElemType elem)

¹¦ÄÜ: ÔÚÊý×ésetÖÐ˳Ðò²éÕÒÔªËØelem, Èç¹û²»³É¹¦, ·µ»Ø-1; ·ñÔò, ʹÓôøѹËõ¹æÔòµÄ

²éÕÒËã·¨,·µ»ØËùÔÚ×Ó¼¯µÄ¸ù½ÚµãË÷Òý.

int Union(NODE *set, ElemType elem1, ElemType elem2)

¹¦ÄÜ: Ó¦ÓÃFindËã·¨Ê×ÏÈÕÒµ½elem1ºÍelem2ËùÔÚµÄ×Ó¼¯, È»ºóÓ¦Óôø¼ÓȨ¹æÔòµÄ²¢ÔËËãËã·¨ºÏ²¢Á½¸ö×Ó¼¯. ²»³É¹¦Ê±, ·µ»Ø-1; ·ñÔò, ·µ»Ø²¢¼¯µÄ¸ù½ÚµãË÷Òý.

void Sort(EDGE *es, int n)

¹¦ÄÜ: ÓÃÈÎÒâ·ÖÀàËã·¨½«Á¬Í¨Í¼µÄ±ß¼¯°´³É±¾ÖµµÄ·Ç½µ´ÎÐò·ÖÀà. void Kruskal(EDGE *es, int m, NODE *set, int n, EDGE *st)

¹¦ÄÜ: ¶ÔÓÐn¸ö½Úµã, mÌõ±ßµÄÁ¬Í¨Íø, Ó¦ÓÃKruskalËã·¨Éú³É×îСÉú³ÉÊ÷, ×îСÉú³ÉÊ÷

µÄ±ß´æ´¢ÔÚÊý×éstÖÐ.

void Output(EDGE *st, int n) ¹¦ÄÜ: Êä³ö×îСÉú³ÉÊ÷µÄ¸÷Ìõ±ß.

[ʵÑé²½Öè]

1. Éè¼Æ²âÊÔÎÊÌâ,Ð޸IJ¢µ÷ÊÔ³ÌÐò, Êä³ö×îСÉú³ÉÊ÷µÄ¸÷Ìõ±ß, Ö±ÖÁÕýȷΪֹ; 2. ´ý¸÷¹¦ÄÜ×Ó³ÌÐòµ÷ÊÔÍê±Ï, È¥µô²âÊÔ³ÌÐò, ½«ÄãµÄ³ÌÐòÕûÀí³É¹¦ÄÜÄ£¿é´æÅ̱¸ÓÃ.

[ʵÑ鱨¸æÒªÇó]

1. ²ûÊöʵÑéÄ¿µÄºÍʵÑéÄÚÈÝ; 2. ²ûÊöKruskalËã·¨µÄÔ­Àí·½·¨; 3. ÌύʵÑé³ÌÐòµÄ¹¦ÄÜÄ£¿é; 4. Ìṩ²âÊÔÊý¾ÝºÍÏàÓ¦µÄ×îСÉú³ÉÊ÷.

[˼¿¼ÓëÁ·Ï°]

1. Éè¼ÆÓÉÁ¬Í¨Íø³õʼ±ß¼¯Êý×éÉú³É×îС¶ÑµÄËã·¨; 2. Éè¼ÆÊä³ö¶Ñ¶¥ÔªËØ, ²¢½«Ê£ÓàÔªËص÷Õû³É×îС¶ÑµÄËã·¨; 3. Õë¶ÔÁ¬Í¨Íø³õʼ±ß¼¯×îС¶Ñ±íʾ, Éè¼ÆKruskalËã·¨;

4. ²ÉÓóɱ¾ÁÚ½Ó¾ØÕó±íʾÁ¬Í¨Íøʱ, ÔÚÊ£Óà±ßÖÐÈçºÎʵÏÖ×îС³É±¾±ßµÄ²éÕÒ? ²ÉÓóɱ¾ÁÚ½Ó¾ØÕó±íʾÁ¬Í¨Íøʱ, ÓÃCÓïÑÔʵÏÖPrimËã·¨.

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ì滻Ϊ@) ËÕICP±¸20003344ºÅ-4