[color=#000000]对[/color][color=#000000][i]n[/i][/color][color=#000000]个顶点的有向图,采用邻接矩阵和邻接表表示时,如何判别下列问题: [/color][color=#000000]([/color][color=#000000]1[/color][color=#000000])图中有多少条边? [/color][color=#000000]([/color][color=#000000]2[/color][color=#000000])任意两个顶点 [/color][color=#000000][i]i [/i][/color][color=#000000]和 [/color][color=#000000][i]j [/i][/color][color=#000000]是否有边相连? [/color][color=#000000]([/color][color=#000000]3[/color][color=#000000])任意一个顶点的度是多少?[/color]
举一反三
- [color=#000000]请画出下列广义表的图形表示。 [/color][color=#000000](1)[/color][color=#000000][i]D[/i][/color][color=#000000]([/color][color=#000000][i]A[/i][/color][color=#000000](),[/color][color=#000000][i]B[/i][/color][color=#000000]([/color][color=#000000][i]e[/i][/color][color=#000000]),[/color][color=#000000][i]C[/i][/color][color=#000000]([/color][color=#000000][i]a[/i][/color][color=#000000],[/color][color=#000000][i]L[/i][/color][color=#000000]([/color][color=#000000][i]b[/i][/color][color=#000000],[/color][color=#000000][i]c[/i][/color][color=#000000],[/color][color=#000000][i]d[/i][/color][color=#000000])))。 [/color][color=#000000](2)[/color][color=#000000][/color][tex=16.5x1.357]2//TDXVdRsUjJeqqAHc4/O/T0Y9dJEUv7hSuEhI4XIwjwRCCxPU0z0++4d4GPBJl74OoLLIjvae3/PwpxOpAcKqMHPXRYBE1MtHSEDFRITb/ZQOJgeP9m5Zy7zmikHt2hsbWGiGY3AYukBRVCbNPbmSluqwE+SOnxqLbpw6cQcg=[/tex][color=#000000]。[/color]
- [color=#000000]试编写递归算法,逆转广义表中的数据元素。[/color][color=#000000][color=#000000]例如,将广义表([/color][color=#000000][i]a[/i][/color][color=#000000],(([/color][color=#000000][i]b[/i][/color][color=#000000],[/color][color=#000000][i]c[/i][/color][color=#000000]),( )),((([/color][color=#000000][i]d[/i][/color][color=#000000]),[/color][color=#000000][i]e[/i][/color][color=#000000]),[/color][color=#000000][i]f[/i][/color][color=#000000])) [/color][/color][color=#000000][color=#000000]逆转为(([/color][color=#000000][i]f[/i][/color][color=#000000],([/color][color=#000000][i]e[/i][/color][color=#000000],([/color][color=#000000][i]d[/i][/color][color=#000000]))),(( ),([/color][color=#000000][i]c[/i][/color][color=#000000],[/color][color=#000000][i]b[/i][/color][color=#000000])),[/color][color=#000000][i]a[/i][/color][color=#000000])。[/color][/color]
- [color=#000000]假设系数矩阵[/color][color=#000000][i]A[/i][/color][color=#000000]和[/color][color=#000000][i]B[/i][/color][color=#000000]均为以三元组顺序表作为存储结构。试写出满足以下条件的矩 [/color][color=#000000]阵相加的算法:假设三元组顺序表[/color][color=#000000][i]A[/i][/color][color=#000000]的空间足够大,将矩阵[/color][color=#000000][i]B[/i][/color][color=#000000]加到矩阵[/color][color=#000000][i]A[/i][/color][color=#000000]上,不增加[/color][color=#000000][i]A[/i][/color][color=#000000],[/color][color=#000000][i]B[/i][/color][color=#000000]之外 [/color][color=#000000]的附加空间,你的算法能否达到[/color][color=#000000][i]O[/i][/color][color=#000000]([/color][color=#000000][i]m[/i][/color][color=#000000]+[/color][color=#000000][i]n[/i][/color][color=#000000])的时间复杂度?其中[/color][color=#000000][i]m[/i][/color][color=#000000]和[/color][color=#000000][i]n[/i][/color][color=#000000]分别为[/color][color=#000000][i]A[/i][/color][color=#000000],[/color][color=#000000][i]B[/i][/color][color=#000000]矩阵中非零元 [/color][color=#000000]的数目。 [/color]
- [color=#000000]对如下带权有向图,[/color][color=#000000][img=364x482]17af772a4cbebf8.png[/img][/color][color=#000000][color=#000000]求([/color][color=#000000]1[/color][color=#000000])每个顶点的入度和出度; [/color][/color][color=#000000][color=#000000]([/color][color=#000000]2[/color][color=#000000])邻接矩阵; [/color][/color][color=#000000][color=#000000]([/color][color=#000000]3[/color][color=#000000])邻接表。[/color][/color]
- 写出下列程序的执行结果[color=#000000]#include <stdio.h> [/color][color=#000000]int main(void) [/color][color=#000000]{ [/color][color=#000000] int a[10], b[10], *pa, *pb, i; [/color][color=#000000] pa = a; [/color][color=#000000] pb = b; [/color][color=#000000] for( i=0; i<3; i++, pa++, pb++) [/color][color=#000000] { [/color][color=#000000] *pa = i; [/color][color=#000000] *pb = 2*i; [/color][color=#000000] printf(“%d\t%d\n”, *pa, *pb); [/color][color=#000000] } [/color][color=#000000] pa = &a[0]; [/color][color=#000000] pb = &b[0]; [/color][color=#000000] for ( i=0; i<3; i++) [/color][color=#000000] { [/color][color=#000000] *pa = *pa + i; [/color][color=#000000] *pb = *pb + i; [/color][color=#000000] printf(“%d\t%d\n”, *pa++, *pb++); [/color][color=#000000] } [/color][color=#000000][color=#000000] return 0; [/color][/color][color=#000000]} [/color]