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 *)m