Êý¾Ý½á¹¹ÓëËã·¨¿Î³ÌÉè¼Æ³ÌÐòÓ뱨¸æ ÏÂÔØ±¾ÎÄ

Êý¾Ý½á¹¹ÓëËã·¨¿Î³ÌÉè¼Æ±¨¸æ

퉀
Á½Á½ÏàÁ¬µÄ·¿¼äÎÊÌ⣺

Ò»ËùÆæ¹ÖµÄ·¿×Ó£¬ÕâËù·¿×ÓÀïÓÐn¸ö·¿¼ä£¬Ã¿¸ö·¿¼äÀïÓÐһЩÃÅͨÏò±ðµÄ·¿¼ä£¬¿ÉÊÇÕâЩÃÅÊ®·ÖÆæ¹Ö£¬ËüÃÇÖ»ÄÜ´Ó·¿¼äa¿ªÏò·¿¼äb£¬Ò²¾ÍÊÇ˵£¬Ò»ÉÈ´Óa¿ªÏòbµÄÃÅÊDz»ÄÜÈÃÒ»¸öÈË´Ób·¿¼ä×ßµ½a·¿¼äµÄ¡£ÄãÄܼÆËãÒ»ÏÂÈÎÒâÁ½¸ö·¿¼äÖ®¼ä¶¼»¥ÏàÏàͨÂð£¿

ÎÊÌâ·ÖÎö

´Ë³ÌÐòÐèÒªÍê³ÉÈçÏÂÒªÇó£ºÔÚÕâËù·¿×ÓÀ´ÓÈÎÒâÒ»¸ö·¿¼ä¿ªÊ¼£¬°´ÕÕ¿ªÃŵķ½Ïò£¬¾ùÄܹ»ÕÒµ½Ò»¸öºÏÊʵÄ·Ïߣ¬Ê¹µÃÒ»¸öÈËÄܹ»²»Öظ´µÄµ½´ïÆäËûµÄÿһ¸ö·¿¼ä£¬ËùÒÔ£¬ÐèÒÔÿһ¸ö·¿¼ä¶¼ÎªÒ»´ÎÆðʼµãÀ´×ßÏòÆäËûµÄ·¿¼ä£¬ÒÔ´ËÀ´ÅжÏÕâËù·¿×ÓÀïµÄÈÎÒâÁ½¸ö·¿¼äÖ®¼äÊÇ·ñ»¥ÏàÏàͨ¡£

ʵÏÖ±¾³ÌÐòÐèÒª½â¾öÒÔÏÂÎÊÌ⣺ 1. ÈçºÎ±íʾÿһ¸ö·¿¼ä£¬¼´´æ´¢·¿¼äµÄÐÅÏ¢£¬²¢ÇÒ»¹ÒªÈ·¶¨ÕâËù·¿×ÓÀïµÄ¸÷¸ö·¿¼äµÄλÖᣠ2. ¸÷¸ö·¿¼äÖ®¼äµÄÃÅ£¬ÒÔ¼°ÃÅÊÇ´ÓÄĸö·¿¼ä¿ªÏòÄĸö·¿¼äµÄ¸ÃÈçºÎ±íʾºÍ´æ´¢µÄ¡£ 3. ´Óijһ¸ö·¿¼ä¿ªÊ¼£¬ÈçºÎ×ßµ½ÆäËû¸÷¸ö·¿¼ä£¬¼´ÈçºÎ¶Ô·¿¼ä½øÐбéÀú¡£

4. ΪÁËÔÚ±éÀú¹ý³ÌÖУ¬²»Öظ´µÄ±éÀúÿһ¸ö·¿¼ä£¬¸ÃÈçºÎ±ê¼ÇÒѱ»±éÀú¹ýµÄ·¿¼ä£¬´Ó¶øÖ»

·ÃÎÊδ×ß¹ýµÄ·¿¼ä¡£

5. ×îºóͨ¹ýʲôµÄ±éÀú·½Ê½²ÅÄÜÅжϸ÷¸ö·¿¼äÖ®¼äÊÇ·ñ»¥ÏàÏàͨ¡£

Êý¾Ý½á¹¹µÄÑ¡ÔñºÍ¸ÅÒªÉè¼Æ

ͨ¹ý¶ÔÌâĿҪÇóµÄÀí½â£¬ÎÒÃÇ¿ÉÒÔÓÃͼÀ´±íʾÕâËù·¿×Ó£¬¶ø·¿×ÓÖеĸ÷¸ö·¿¼ä¾ÍÏ൱ÓÚͼÖеĸ÷¸ö½áµã£¬ÓÉÓÚ·¿¼äµÄÃÅÊÇÓз½ÏòµÄ£¬Ò»ÉÈ´Óa¿ªÏòbµÄÃÅÊDz»ÄÜÈÃÒ»¸öÈË´Ób·¿¼ä×ßµ½a ·¿¼äµÄ£¬´Ó¶ø¿ÉÖª¸ÃͼΪÓÐÏòͼ£¬ÄÇôÞÍÏ൱ÓÚÓÐÏòͼÖеĻ¡£¬´ÓÒ»¸öÃÅ¿ªÏòÁíÒ»¸öÃż´´ú±íÓÐÏòͼÖл¡µÄÆðʼµãºÍÖÕÖ¹µã¡£

¶ÔÓÚͼµÄ´æ´¢£¬ÎÒ²ÉÓÃÁÚ½Ó±íµÄÐÎʽÀ´´æ´¢£¬²¢½«Ã¿Ò»¸ö·¿¼ä½øÐбàºÅ£¬¶ÔÓÚÁÚ½Ó±í£¬ÔòÐèÒª¶¨ÒåÒ»¸öÁÚ½Ó±í½áµãÀàÐÍ¡¢ÁÚ½Ó±í±íÍ·½áµãÀàÐÍ£¬Í¨¹ý±íÍ·Óë½áµãµÄÁ¬½Ó¶ø½«ÓÐÏòͼÖл¡µÄÐÅÏ¢´æ´¢ÆðÀ´¡£ÄÇôÈË´ÓÈÎÒâÒ»¸ö·¿¼ä×ßÏòÁíÒ»¸ö·¿¼ä£¬¼´Ï൱ÓÚÓÐÏòͼÖдÓÒ»¸ö½áµã°´ÕÕ»¡µÄÐÅÏ¢·ÃÎÊÆäËûµÄ½áµã£¬¿ÉÒÔ²ÉÓÃÉî¶ÈÓÅÏÈËÑË÷±éÀú¡£Èç¹û´Óÿһ¸ö½áµãÒÔÆðʼµã¿ªÊ¼Ò»´Î±éÀú¾Í¶¼ÄÜ·ÃÎʵ½ÆäËû½áµãµÄ»°Ôò˵Ã÷ÓÐÏòͼÊÇÁ¬Í¨Í¼£¬¼´¸Ã·¿×ÓÀïµÄ¸÷¸ö·¿¼äÄܹ»»¥ÏàÏàͨ¡£¶¨ÒåÒ»¸öÈ«¾ÖµÄÕûÐαäÁ¿flag£¬Èç¹ûÊÇÁ¬Í¨Í¼µÄ»°Ôòflag=1£¬·ñÔòflag=0¡£

³ÌÐòʵÏÖµÄÁ÷³ÌͼÈçÏ£º ¸ø¸÷¸ö·¿¼ä±àºÅ£¬ÒÔ·½±ã´æ´¢ ¶¨ÒåÁÚ½Ó±í½áµãÀàÐÍ¡¢ÁÚ½Ó±í±íÍ·½áµãÀàÐÍ ³õʼ»¯¸÷¸ö·¿¼ä£¬±ê¼ÇÈÃÆä¿ªÊ¼¶¼Îª±»·ÃÎʹý ´´½¨ÁÚ½Ó±íº¯Êý£¬ÓÉÓû§ÊäÈë·¿¼äºÍÃŵÄÐÅÏ¢£¬²¢´æÈëÁÚ½Ó±íÖÐ ½¨Á¢Éî¶ÈÓÅÏÈËÑË÷º¯Êý£¬ÓõݹéµÄ·½Ê½À´±éÀú¸÷¸ö·¿¼ä main£¨£© µ÷Óô´½¨ÁÚ½Ó±íº¯ÊýºÍÉî¶ÈÓÅÏÈËÑË÷º¯Êý ·ñ ÊÇ flagÊÇ·ñ Á½Á½·¿¼ä²»¿ÉÒÔ»¥ÏàÏàͨ Á½Á½·¿¼ä¿ÉÒÔ»¥ÏàÏàͨ µÈÓÚ1 Ë㷨˼Ïë

Ö÷ÒªÊǰÑÏÖʵÖеķ¿×Óת»»³ÉÊý¾Ý½á¹¹ÓëËã·¨ÖÐͼµÄ˼Ï룬²¢ÓÃÁÚ½Ó±íµÄ´æ´¢·½Ê½À´´æ´¢Í¼£¬·¿×ÓÀïµÄ·¿¼ä¼´Ï൱ÓÚͼÖеÄÒ»¸ö¸ö½áµã£¬ÃÅÖ»ÄÜ´ÓÒ»¸ö·¿¼ä¿ªÏòÁíÒ»¸ö·¿¼ä£¬Ôò˵Ã÷Á˸ÃͼÊÇÓÐÏòͼ£¬ÄÇô±éÀúµÄ¹ý³ÌÖÐÖ»Äܰ´ÕÕÓÐÏòͼÖл¡ËùÖ¸µÄ·½ÏòÀ´±éÀú¡£ÔÚÉî¶ÈÓÅÏÈËÑË÷±éÀúµÄËã·¨ÖУ¬¶ÔÓÚÁ¬Í¨Í¼µÄ±éÀú£¬ÒÔijһ¸ö½áµãΪÆðʼµã¿ªÊ¼±éÀú£¬Ö»ÐèÒª±éÀúÒ»´Î¾Í¿ÉÒÔ·ÃÎʵ½ËùÓеĽáµã£¬ËùÒÔÒÔ´ËÌõ¼þÀ´ÅжϸÃͼÊÇ·ñÊÇÁ¬Í¨Í¼£¬¼´¿ÉµÃ³ö·¿×ÓÀïµÄ¸÷¸ö·¿¼äÊÇ·ñ¿ÉÒÔ»¥ÏàÏàͨ¡£

ÏêϸÉè¼ÆºÍÖ÷Òª±àÂë¶Î

Ê×ÏȽṹÌåÀàÐÍ£¬·Ö±ðÊÇÁÚ½Ó±íÖнáµã½á¹¹ÀàÐÍArcnode£¬Æä°üº¬´æ´¢·¿¼äµÄÕûÐαäÁ¿adjvex£¬ºÍÖ¸ÏòÏÂÒ»¸ö½áµãµÄÖ¸Õënextarc¡£ÁÚ½Ó±íÖбíÍ·½áµã½á¹¹ÀàÐÍVexnode£¬ÆäͬÑù°üº¬´æ´¢·¿¼äµÄÕûÐαäÁ¿vexdata£¬ºÍÖ¸ÏòµÚÒ»¸öÁÚ½ÓµãµÄÖ¸Õëfirstarc£¬Í¬Ê±¶¨ÒåÒ»¸öVexnodeÀàÐ͵ÄһάÊý×飬ÒÀ´Î½«·¿¼äµÄÐÅÏ¢´æ´¢ÔÚÕâ¸öһλÊý×éÖС£×îºó¶¨ÒåÒ»¸öÁÚ½Ó±íµÄ½á¹¹ÌåÀàÐÍ£¬ÆäÖаüº¬VexnodeÀàÐ͵ÄһάÊý×飬½«·¿×ÓÖÐËùÓеķ¿¼äÓÐÐòµÄ´æ´¢ÔÚһάÊý×éÖУ¬ÒÔ¼°Á½¸ö¼Ç¼·¿¼ä¸öÊýºÍÃŵĸöÊýµÄÕûÐαäÁ¿¡£Í¨¹ýÒÔÉϽṹÌåÀàÐ͵͍Ò壬¼´¿ÉµÃµ½Ò»¸öÁÚ½Ó±íµÄ´æ´¢·½Ê½£¬´Ó¶ø½«·¿×Óת»»³ÉͼµÄ˼Ïë°Ñÿ¸ö·¿¼äºÍÿ¸öÃŵÄÐÅÏ¢¶¼´æ´¢ÔÚÁÚ½Ó±íÖС£

¶ÔÓÚ½¨Á¢ÁÚ½Ó±íµÄº¯Êý£¬Ò²¾ÍÊǽ«·¿¼äºÍÃŵÄÐÅÏ¢ÓÉÓû§ÊäÈë²¢´æ´¢ÔÚÁÚ½Ó±íÖС£½«·¿¼ä±àºÅÒԺ󣬶ÔÁÚ½Ó±íµÄ±íÍ·½áµã½øÐгõʼ»¯£º

Ê×ÏȽ«·¿¼äµÄÐÅÏ¢´æ´¢½ø±íÍ·½áµãÖУº for(i=1;i<=n;i++){ al[i].vexdata=i; al[i].firstarc=NULL; }

Êý×éal[i]ÊDZíÍ·½áµãVexnodeÀàÐ͵쬽«·¿¼äµÄ´æ´¢ÔÚһάÊý×éÖеÄvexdataÖУ¬²¢ÈÃal[i]µÄÖ¸ÕëÓò³õʼ»¯Ö¸Ïò¿Õ¡£

Æä´Î½«ÃŵÄÐÅÏ¢´æ´¢ÔÚÁÚ½Ó±íÖУ¬¼´Í¨¹ý±íÍ·½áµãÖеÄfirstarcÖ¸ÕëÓòÀ´Ö¸ÏòµÚÒ»¸öÁڽӵ㣬ȻºóÆäËüÁÚ½ÓµãµÄnextarcÖ¸ÕëÓòÓÖÖ¸ÏòÏÂÒ»¸ö½áµã£¬´Ó¶ø½«¸÷¸ö·¿¼ä´®ÆðÀ´¡£ÔÚÓû§ÊäÈëÃŵÄÐÅϢʱ£¬Èç¹ûÃÅÊÇ´Ó001ºÅ·¿¼ä¿ªÏò010ºÅ·¿¼äµÄ£¬ÔòÈÃÓû§ÊäÈë001 010£¬¼´È·¶¨ÁË¿ªÃŵķ½Ïò£¬¾ÍÏ൱ÓÚÓÐÏòͼÖÐÊäÈ뻡µÄÆðʼµãºÍÖÕÖ¹µã£¬¼´¿É½«ÃŵÄËùÓÐÐÅÏ¢¶¼´æ´¢½øÀ´ÁË£¬´Ó¶ø½«ÕâËù·¿×ÓÓÃͼµÄ˼Ïë´æ´¢ÔÚÁÚ½Ó±íÖС£ÆäÖУ¬Ã¿ÊäÈëÒ»¸öÃŵÄÐÅÏ¢£¬Ôò¶¯Ì¬Éú³ÉÒ»¸ö½áµã£¬ÈÃÒ»¸öÖ¸ÕëpÖ¸Ïò¸Ã½áµã£¬½«»¡µÄÖÕÖ¹µã´æÈëp->adjvexÖУ¬²ÉÓÃÍ·²å·¨£¬½«±íÍ·½áµãÖÐfirstarcÖ¸ÕëËùÖ¸Ïò½áµãÈ«²¿¸³¸øpÖ¸ÕëÖеÄnextarcÖ¸Õ룬ÔÙÈñíÍ·½áµãÖеÄfirstarcÖØÐÂÖ¸ÏòÐÂÉú³ÉµÄÁ´±í¡£´úÂëÈçÏ£º

printf(\ÇëÊäÈ뿪Ãŵķ½Ïò(ÈçÃÅ´Ó001ºÅ·¿¼ä¿ªÏò010ºÅ·¿¼ä£¬ÄÇô¾ÍÊäÈë001 010)£º\\n\

for(i=0;i

p=(Arcnode*)malloc(sizeof(Arcnode)); p->adjvex=k; p->nextarc=al[j].firstarc; al[j].firstarc=p; }

¶ÔÓÚÉî¶ÈÓÅÏÈËÑË÷±éÀú£¬ÎÒ¶îÍâÓÖ¶¨ÒåÁËÒ»¸öº¯ÊýDFS_trave(ALGraph alg)£¬¸Ãº¯ÊýµÄ×÷ÓÃÒ»ÊǶÔËùÓеķ¿¼äÐÅÏ¢½øÐгõʼ»¯£¬±ê¼ÇÆäδ±»·ÃÎʹý£¬¶þÊÇÔÚµ÷ÓÃÉî¶ÈÓÅÏÈËÑË÷±éÀúº¯Êýºó£¬ÅжÁ¸÷¸ö·¿¼äÖ®¼äÊÇ·ñ¿ÉÒÔ»¥ÏàÏàͨ¡£ÔÚ·ÃÎÊ·¿¼äµÄ¹ý³ÌÖУ¬ÓÉÓÚÐèÒªÒÔÿһ¸ö·¿¼ä¶¼ÎªÒ»´Î³õʼµã¿ªÊ¼±éÀú£¬½øÐÐÒ»´ÎÉî¶ÈÓÅÏÈËÑË÷±éÀúºó£¬±ØÐëÆäËûµÄÿһ¸ö·¿¼ä¶¼±»±ê¼Ç·ÃÎʹýÁË£¬²ÅÄÜ´ú±í¸÷¸ö·¿¼äÖ®¼äÊÇ¿ÉÒÔ»¥ÏàÏàͨµÄ¡£×¢Ò⣬֤Ã÷·¿¼äÖ®¼ä»¥ÏàÏàͨ¼´Ö¤Ã÷¸ÃÓÐÏòͼΪÁ¬Í¨Í¼£¬ÔòÒÔÿһ¸ö·¿¼äΪÆðʼµãʱֻҪ½øÐÐÒ»´ÎÉî¶ÈÓÅÏÈËÑË÷±éÀú£¬¾ÍÄÜʹÿ¸ö½áµã¶¼±»·ÃÎʹý£¬Õâ²ÅÄÜ˵Ã÷ËüÊÇÁ¬Í¨Í¼£¬·ñÔò¾Í²»ÊÇÁ¬Í¨Í¼£¬¼´¸÷¸ö·¿¼äÖ®¼äÎÞ·¨»¥ÏàÏàͨ¡£ÄÇôÔÚ±ê¼Ç·¿¼äÊÇ·ñ±»·ÃÎʹý£¬²ÉÓöþάÊý×éµÄ·½Ê½±ê¼Çvisited[i][j]¡£¸Ã¶þάÊý×éµÄÐÐϱê´ú±íÒÔÄĸö·¿¼äΪÆðʼµã¿ªÊ¼±éÀúµÄ£¬¼´´æ´¢Æðʼµã·¿¼äµÄ£¬ÓÃnum±íʾ£¬ÔÚÒ»´Î±éÀúÖÐnumµÄÖµÊDz»±äµÄ£¬ÒòΪһ´Î±éÀúʼÖÕÊÇÒԸ÷¿¼äΪÆðʼµãµÄ£¬ÁÐϱí´ú±í·ÃÎʵ½Äĸö·¿¼ä£¬Ò²´æ´¢¸Ã·¿¼äµÄ£¬ËùÒÔÁÐϱíÔÚÒ»´Î±éÀúÖÐÊDZ仯µÄ¡£³õʼ»¯¸ÃÊý×éʱ£¬Áî¶þάÊý×éÖÐËùÓеÄÖµ¶¼Îª0£¬´ú±íËùÓеķ¿¼ä¶¼Î´±»·ÃÎʹý£¬µ±Ä³Ò»¸ö·¿¼ä±»·ÃÎʹý£¬Ôò½«´ú±íÕâ¸ö·¿¼äµÄ¶þάÊý×éµÄÖµ±äΪ1£¬È磺ÒÔ005ºÅ·¿¼äΪÆðʼµã£¬·ÃÎʵ½ÁË012ºÅ·¿¼ä£¬ÔòÁîvisited[5][12]=1¡£´úÂëÈçÏ£º

void DFS_trave(ALGraph alg){ int i,j; for(i=1;i<=alg.vexnum;i++) for(j=1;j<=alg.vexnum;j++) visited[i][j]=0; for(num=1;num<=alg.vexnum;num++)