µ±Ç°Î»ÖãºÊ×Ò³ > ¡¶Êý¾Ý½á¹¹ÊµÑéÖ¸µ¼Êé¡·
µÚÒ»²¿·Ö ÉÏ»úʵ¼ù
ʵÑéËÄ Í¼
ʵÑéʱ¼ä£º Ô ÈÕ
Ò»¡¢ÊµÑéÄ¿µÄ
1£®ÕÆÎÕͼµÄÁÚ½Ó¾ØÕó×÷Ϊ´æ´¢½á¹¹µÄ·½·¨¼°ÆäÏà¹Ø²Ù×÷µÄʵÏÖ£» 2£®ÕÆÎÕͼµÄÁÚ½Ó±í×÷Ϊ´æ´¢½á¹¹µÄ·½·¨¼°ÆäÏà¹Ø²Ù×÷µÄʵÏÖ£» 3£®ÕÆÎÕͼµÄ×îСÉúÊ÷µÄPrimËã·¨£»
4£®Í¨¹ýʵ¼ùÕÆÎÕͼµÄµÄÍØÆËÅÅÐò¡¢×î¶Ì·¾¶Ëã·¨µÄʵÏÖ¡£
¶þ¡¢ÊµÑéÌâÄ¿ÓëÒªÇó
1£®ÊµÑéÌâĿһ£ºÍ¼µÄÁÚ½Ó¾ØÕó´æ´¢µÄʵÏÖ¡¢Í¼µÄ±éÀúËã·¨
ÒªÇ󣺲ÉÓÃÁÚ½Ó¾ØÕó×÷ΪͼµÄ´æ´¢½á¹¹£¬ÊµÏÖÏà¹Ø»ù±¾²Ù×÷µÄËã·¨£¬²¢½øÐÐÑéÖ¤¡£ 2£®ÊµÑéÌâÄ¿¶þ£ºÍ¼µÄÁÚ½Ó±í´æ´¢·½µÄʵÏÖ¡¢Í¼µÄ±éÀúËã·¨
ÒªÇ󣺲ÉÓÃÁÚ½Ó±í×÷ΪͼµÄ´æ´¢½á¹¹£¬ÊµÏÖͼµÄ´´½¨µÈ²Ù×÷µÄËã·¨£¬²¢½øÐÐÑéÖ¤¡£ÔÚ´Ë»ù´¡ÉÏʵÏÖÓÐÏòͼµÄÍØÆËÅÅÐòËã·¨¡£
3£®ÊµÑéÌâÄ¿Èý£ºÍ¼×îСÉú³ÉÊ÷Ëã·¨
ÒªÇó£ºÔÚÌâĿһ»òÌâÄ¿¶þµÄ»ù´¡ÉÏÀûÓÃÁÚ½Ó¾ØÕ󣨻òÁÚ½Ó±í£©×÷ΪͼµÄ´æ´¢½á¹¹£¬±à³ÌʵÏÖ×îСÉú³ÉÊ÷Çó½â£¬²¢½øÐÐÑéÖ¤¡£
4£®Í¼µÄ×î¶Ì·¾¶Ëã·¨
ÒªÇó£ºÔÚÌâĿһ»òÌâÄ¿¶þµÄ»ù´¡ÉÏÀûÓÃÁÚ½Ó¾ØÕ󣨻òÁÚ½Ó±í£©×÷ΪͼµÄ´æ´¢½á¹¹£¬±à³ÌʵÏÖ×î¶Ì·¾¶Ëã·¨£¬²¢½øÐÐÑéÖ¤¡£
˵Ã÷£ºÊµÑéÌâĿһ¡¢¶þΪ±Ø×öÄÚÈÝ£»ÊµÑéÌâÄ¿Èý¡¢ËÄΪѡ×öÄÚÈÝ¡£
Èý¡¢ÊµÑéÄÚÈÝ
1£®Í¼µÄÁÚ½Ó¾ØÕó±íʾ·¨µÄʵÏÖ
£¨1£©Í¼µÄÁÚ½Ó¾ØÕó±íʾ¼°Ïà¹Ø²Ù×÷µÄ¶¨Òå¡£½«ÈçÏ´úÂëÉè¼ÆÍêÕû£¬²¢±£´æÎª¡°MGraph.h¡±¡£
typedef int QElemType; #include \#define INFINITY 9999 #define MaxVexNum 20 typedef struct
{ VexType vexs[MaxVexNum];
int arcs[MaxVexNum][MaxVexNum]; int vexNum,arcNum;
int kind; //ͼµÄÖÖÀࣺ1-ÎÞÏòͼ 2-ÎÞÏòÍø 3-ÓÐÏòͼ 4-ÓÐÏòÍø }MGraph; //ͼµÄÀàÐÍ
-27-
µÚÒ»²¿·Ö ÉÏ»úʵ¼ù
int compareTo(VexType v1,VexType v2);//¶¥µãÔªËØµÄ±È½Ïº¯ÊýÉùÃ÷ int LocateVex(MGraph &G,VexType v)
//ÔÚͼGÖвéÕÒ¶¥µãv£¬Èô´æÔÚ·µ»ØÎ»Ö㬷ñÔò·µ»Ø-1 { int i;
for(i=0;i if(compareTo(G.vexs[i],v)==0) return i; return -1; } void InputVexInfo(VexType v); //¶¥µãÐÅÏ¢ÊäÈ뺯ÊýÉùÃ÷ void CreatUDG(MGraph &G) //ÎÞÏòͼµÄ´´½¨²Ù×÷ { VexType v1,v2; int i,j,k; G.kind=0; printf(\.vexNum)); printf(\ printf(\ for(i=0;i for(j=0;j printf(\ Start vertex:\ printf(\ End vertex:\ i=LocateVex(G,v1); if(i==-1) { printf(\ return;} j=LocateVex(G,v2); if(j==-1) { printf(\ return;} G.arcs[i][j]=G.arcs[j][i]=1; } } int FirstAdjVex(MGraph &G, int v) //ÇóvµÄµÚÒ»¸öÁÚ½Ó¶¥µã { //´úÂëÂÔ } int NextAdjVex(MGraph &G, int v,int w) //ÇóvµÄÏà¶ÔÓÚwµÄÏÂÒ»¸öÁÚ½Ó¶¥µã { //´úÂëÂÔ } void visit(VexType v); //¶¥µã·ÃÎʺ¯ÊýÉùÃ÷ int visited[MaxVexNum]; //¶¥µã·ÃÎʸ¨ÖúÊý×é void DFS(MGraph &G, int v) //´Ó¶¥µãv³ö·¢£¬Éî¶ÈÓÅÏȱéÀúͼG -28- µÚÒ»²¿·Ö ÉÏ»úʵ¼ù { //´úÂëÂÔ } void DFSTraverse(MGraph &G) //ͼµÄÉî¶ÈÓÅÏȱéÀúËã·¨ { //´úÂëÂÔ } void BFSTraverse(MGraph &G) //ͼµÄÉî¶ÈÓÅÏȱéÀúËã·¨ { //´úÂëÂÔ } £¨2£©Í¼µÄÁÚ½Ó¾ØÕó±íʾµÄ²âÊÔ³ÌÐò¼°Ó¦Óà ÒÔÏÂʵÏÖÁ˶ԡ°MGraph.h¡±ÖÐͼµÄÁÚ½Ó¾ØÕó±íʾ¼°Æä²Ù×÷µÄ²âÊÔʾÀý³ÌÐò¡£Í¬Ñ§ÃÇ»¹¿É×ÔÐÐÉè¼Æ²âÊÔ³ÌÐò´úÂë¡£ #include typedef char VexType[20]; //¶¥µãÀàÐÍΪ×Ö·ûÊý×éÀàÐÍ #include \ int compareTo(VexType v1,VexType v2)//¶¥µãÔªËØµÄ±È½Ïº¯Êý¶¨Òå { return strcmp(v1,v2); } void InputVexInfo(VexType v) //¶¥µãÐÅÏ¢ÊäÈ뺯Êý¶¨Òå { scanf(\} void visit(VexType v) //¶¥µã·ÃÎʺ¯Êý¶¨Òå { printf(\ \} void OutputG(MGraph &G) //ͼµÄÁÚ½Ó¾ØÕóµÄÊä³ö²Ù×÷ { int i,j; printf(\.kind); printf(\ for(i=0;i for(i=0;i -29- µÚÒ»²¿·Ö ÉÏ»úʵ¼ù int main() { MGraph G; CreatUDG(G); OutputG(G); printf(\ DFSTraverse(G); printf(\ BFSTraverse(G); printf(\} £¨3£©ÍêÕûµÄ³ÌÐò´úÂë -30-
¹²·ÖÏí92ƪÏà¹ØÎĵµ