#include <stdio.h> const int N = 10; //判断无向图是否欧拉图 //返回值为奇度数结点数 int euler1(int** a, int n) { //**********************begin*********************************** //**********************end************************************** } int main( ) { int** a1;//无向图 int n, i, j; scanf("%d", &n);//读入结点数 if (n > N) { printf("error\n"); return 0; } a1 = new int* [n]; for (i = 0; i < n; i++) { a1[i] = new int[n]; for (j = 0; j < n; j++) { a1[i][j] = 0; } } while (1) { scanf("%d%d", &i, &j);//读入无向边 //********************begin************************* //******************end***************************** } int odd = euler1(a1, n); if (odd == 0) { printf("a is euler\n"); } else if (odd == 2) printf("a is semi-euler\n"); else printf("a is not euler\n"); }
时间: 2023-07-18 22:48:01 浏览: 78
C语言函数库全面详解
好的,让我们来完成 `euler1` 函数的编写。我们可以用一个数组 `degree` 来记录每个顶点的度数,然后遍历 `degree` 数组,统计奇度数结点的个数即可。
以下是完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
const int N = 10;
//判断无向图是否欧拉图,返回值为奇度数结点数
int euler1(int** a, int n) {
int odd = 0;
int* degree = new int[n];
for (int i = 0; i < n; i++) {
degree[i] = 0;
for (int j = 0; j < n; j++) {
degree[i] += a[i][j];
}
if (degree[i] % 2 == 1) {
odd++;
}
}
delete[] degree;
return odd;
}
int main() {
int** a1;//无向图
int n, i, j;
scanf("%d", &n);//读入结点数
if (n > N) {
printf("error\n");
return 0;
}
a1 = new int* [n];
for (i = 0; i < n; i++) {
a1[i] = new int[n];
for (j = 0; j < n; j++) {
a1[i][j] = 0;
}
}
while (1) {
scanf("%d%d", &i, &j);//读入无向边
if (i == -1 && j == -1) break;
a1[i][j] = a1[j][i] = 1;
}
int odd = euler1(a1, n);
if (odd == 0) {
printf("a is euler\n");
}
else if (odd == 2) {
printf("a is semi-euler\n");
}
else {
printf("a is not euler\n");
}
for (i = 0; i < n; i++) {
delete[] a1[i];
}
delete[] a1;
return 0;
}
```
在主函数中,我们先读入结点数 `n`,然后根据结点数动态分配一个二维数组 `a1`,并将所有元素初始化为零。接下来,我们通过一个循环,不断读入无向边,直到读入 `-1 -1` 为止。
在读入无向边时,我们可以将两个顶点之间的边在邻接矩阵中标记出来,即 `a1[i][j] = a1[j][i] = 1`。
最后,我们调用 `euler1` 函数,判断该无向图是否为欧拉图。如果 `odd` 的值为 0,说明该图为欧拉图;如果 `odd` 的值为 2,说明该图为半欧拉图;如果 `odd` 的值大于 2,说明该图不是欧拉图。最后,我们释放动态分配的内存并结束程序。
希望这个代码可以对你有所帮助!
阅读全文