d.cd[ --d.start ] = _9__; c = f; ___10___; }
__11_____= d; }
printf( \Êä³öhuffman±àÂë:\\n\ ); for( i = 0; i < n; i++ ) {
printf( \
for( k = hcd[i].start; k < n; k++ ) printf(\%c\ printf( \ ); } }
52
ʵÑé9 ͼµÄ»ù±¾²Ù×÷
ËÄ¡¢²Î¿¼³ÌÐò
³ÌÐò1£ºÌâ1 ÓëÌâ2 ͼ»ù±¾²Ù×÷º¯Êý¼°Æäµ÷Óà #include
#include
/* ºó¼ÌÁÚ½Ó¶¥µã */
/* ÁÚ½Ó±íÀàÐÍ */
}edgeNode;
typedef edgeNode *lgraph[MAX];
typedef int mgraph[MAX][MAX]; /* ÁÚ½Ó¾ØÕóÀàÐÍ */ int visited[MAX]; /* ·ÃÎʱêÖ¾ */ int queue[MAX]; /* ¹ã¶ÈÓÅÏȱéÀú´æ´¢¶ÓÁÐ */
int creat_graph( lgraph lg, mgraph mg ) /* ÊäÈëÎÞÏòͼµÄ±ß, ½¨Á¢Í¼µÄÁÚ½Ó±í, ÁÚ½Ó¾ØÕó */ {
int vn, en, k, i, j;
edgeNode *p;
printf( \ÁÚ½Ó±í·½Ê½½¨Í¼\\n\ while( 1 ) { /* ÊäÈëͼµÄ¶¥µãÊý, ±ßÊý */
vn = en = 0;
printf( \ÊäÈëͼµÄ¶¥µãÊý[1-30]\\n\ );
fflush( stdin );
scanf( \%d\if( ____1_____ ) continue;
printf( \ÊäÈëͼµÄ±ßÊý[0-%d]\\n\scanf( \%d\
if( en >= 0 &&___2______ ) break; }
for( k = 0; k < vn; k++ ) lg[k] =__3___; /* ÖÿÕÁÚ½Ó±í */
53
for( k = 0; k < vn; k++ ) /* ÖÿÕÁÚ½Ó¾ØÕó */
for( i = 0; i < vn; i++ ) _____4___; for( k = 0; k < en; ) { /* ¹¹ÔìÁÚ½Ó±í, ÁÚ½Ó¾ØÕóµÄ¸÷Ìõ±ß */ i = j = -1; printf( \ÊäÈëµÚ[%d]¶ÔÏàÁ¬µÄÁ½Ìõ±ß[1-%d]: \, k+1, vn ); scanf( \%d%d\, &j );
if( i < 1 || j < 1 || i > vn || j > vn ) {
printf( \ÊäÈë´íÎó, ±ß·¶Î§Îª[1-%d]\\n\, vn );
continue;
} k++; i--;
j--; p = (edgeNode *)malloc( sizeof(edgeNode) ); ____5_____; p->next = lg[i];
lg[i] =___6__; /* ½«Ð½áµã²åÈëµ½µÚiÐÐÁÚ½Ó±íÐÐÊ× */ p = (edgeNode *)malloc( sizeof(edgeNode) ); p->vno = i; __7_____; lg[j] = p; /* ½«Ð½áµã²åÈëµ½µÚjÐÐÁÚ½Ó±íÐÐÊ× */ mg[i][j] =__8____ = 1; /* ÖÃÁÚ½Ó¾ØÕóµÄÖµ */
}
return vn; }
void ldfs( lgraph g, int i ) /* ÁÚ½Ó±í±íʾµÄͼµÄµÝ¹éÉî¶ÈÓÅÏȱéÀú */
{ edgeNode *t;
printf( \ /* ·ÃÎʶ¥µãi */
visited[_9_] = 1;
/* ÖÃi¶¥µãÒѱ»·ÃÎÊ */
t = g[i];
while( t != NULL ) { /* ¼ì²éËùÓÐÓë¶¥µãiÏàÁڽӵĶ¥µã */ if( ___10____ ) /* Èç¹û¸Ã¶¥µãδ±»·ÃÎʹý */
ldfs( g, t->vno ); /* ´ÓÁÚ½Ó¶¥µã³ö·¢Éî¶ÈÓÅÏÈËÑË÷ */
_____11____; /* ¿¼²ìÏÂÒ»¸öÁÚ½Ó¶¥µã */
} }
54
void mdfs( mgraph g, int i, int vn ) /* ÁÚ½Ó¾ØÕó±íʾµÄͼµÄµÝ¹éÉî¶ÈÓÅÏȱéÀú */ { int j; printf( \ /* ·ÃÎʶ¥µãi */ visited[i] = 1; /* ÖÃi¶¥µãÒѱ»·ÃÎÊ */ for( j = 0; j < vn; j++ ) { /* ¼ì²éËùÓÐÓë¶¥µãiÏàÁڽӵĶ¥µã */ if( ___12____ &&__13_____ ) /* Èç¹û¸Ã¶¥µãÓбßÇÒδ±»·ÃÎʹý */
mdfs( g, j, vn ); /* ´ÓÁÚ½Ó¶¥µã³ö·¢Éî¶ÈÓÅÏÈËÑË÷ */
}
}
void lbfs( lgraph g, int s, int n ) /* ÁÚ½Ó±í±íʾµÄͼµÄ¹ã¶ÈÓÅÏȱéÀú */ { int i, v, w, head, tail; edgeNode *t; for( i = 0; i < n; i++ ) visited[i] = 0; /* ÖÃÈ«²¿¶¥µãΪδ·ÃÎʱêÖ¾ */ head = tail = 0; /* ¶ÓÁÐÖÃ¿Õ */ printf( \/* ·ÃÎʳö·¢¶¥µã */ visited[s] = 1; /* Öøö¥µãÒѱ»·ÃÎʱêÖ¾ */ queue[ __14____ ] = s; /* ³ö·¢¶¥µã½ø¶Ó */ while( head < tail ) { /* ¶Ó²»¿ÕÑ»· */ v = queue[__15___ ]; /* È¡¶ÓÁÐÊ×¶¥µã */ for( t = g[v]; t != NULL; t = t->next ) { /* °´ÁÚ½Ó±í, ˳Ðò¿¼²ìÓë¶¥µãvÁڽӵĸ÷¶¥µãw */ w =__16___;
if( visited[w] == 0 ) { /* ¶¥µãwδ±»·ÃÎʹý */ printf( \/* ·ÃÎʶ¥µãw */ __17_____; /* Öö¥µãwÒѱ»·ÃÎʱêÖ¾ */ queue[tail++] = w; /* ¶¥µãw½ø¶Ó */
}
}
} }
void mbfs( mgraph g, int s, int n ) /* ÁÚ½Ó¾ØÕó±íʾµÄͼµÄ¹ã¶ÈÓÅÏȱéÀú */ { int i, j, v, head, tail; for( i = 0; i < n; i++ )
visited[i] = 0;
/* ÖÃÈ«²¿¶¥µãΪδ·ÃÎʱêÖ¾ */
55