学好python搞大事! 2022-06-09 17:05 采纳率: 66.7%
浏览 71
已结题

七巧问题 c语言程序已给出 mian函数问号处该怎么写呢

#include<stdio.h>
#include<stdlib.h>
#define MAXV 1000 /最大顶点数设为1000/
typedef struct { /定义结构体类型/
int Visited[MAXV]; /顶点标记/
int Edges[MAXV][MAXV]; /邻接矩阵数组/
int VertexN,EdgeN; /顶点和边数/
}Graph; /用邻接矩阵存储的图结构体/

void InitializeG(Graph*G)
{ /图的初始化/
int i,j;
for(i=0;i<MAXV;i++)
{
for(j=0;j<MAXV;j++)
G->Edges[i][j]=0;
G->Visited[i]=0;
}
G->VertexN=G->EdgeN=0;
}

void ReadG(Graph*G) /读入并存储一个图/
{
int i,V1,V2;
scanf("%d%d",&G->VertexN,&G->EdgeN); /用户输入顶点数和边数/
for(i=0;iEdgeN;i++)
{
scanf("%d%d",&V1,&V2); /输入顶点名称,比坐标大1(1到N)/
G->Edges[V1-1][V2-1]=G->Edges[V2-1][V1-1]=1;
}
}

void DFS(Graph*G,int V)
{ /图G的深度优先搜索/
int W;
G->Visited[V]=1; /将访问到的结点进行标记/
for(W=0;WVertexN;W++)
if (G->Edges[V][W]&&!G->Visited[W])
DFS(G,W);
}

int CheckG(Graph*G)
{ /检查边的度是否全为偶数/
int r,i,j;
for(i=0;iVertexN;i++)
{
r=0;
for(j=0;jVertexN;j++)
r+=G->Edges[i][j];
if (r%2) return 0; /发现奇数度的边则返回0/
}
return 1; /全是偶数度的边则返回1/
}

int main()
{
int i;
GraphG=(Graph)malloc(sizeof(Graph));

return 0;
}
注:(1)
输入说明:输入的第1行包含两个正整数,分别为结点数N(1<N<1000)和
边数M。随后的M行对应M条边,每行给出一对正整数,分别是该条边连
通的两个结点的编号(结点从1到N编号)。
(2)
输出说明:若欧拉回路存在则输出1,否则输出0。
(3)
测试实例:
1)输入:
6 10
1 2
2 3
3 1
4 5
5 6
6 4
1 4
1 6
3 4
3 6
输出:1
(说明:存在欧拉回路)
2)输入:
5 8
1 2
1 3
2 3
2 4
2 5
5 3
5 4
3 4
输出:0
(说明:不存在欧拉回路)

  • 写回答

1条回答 默认 最新

  • sinJack 2022-06-09 18:21
    关注

    不就调用一下方法吗。

    #include<stdio.h>
    #include<stdlib.h>
    #define MAXV 1000 //最大顶点数设为1000//
    typedef struct { //定义结构体类型//
    int Visited[MAXV]; //顶点标记//
    int Edges[MAXV][MAXV]; //邻接矩阵数组//
    int VertexN,EdgeN; //顶点和边数//
    }Graph; //用邻接矩阵存储的图结构体//
    
    void InitializeG(Graph*G)
    { //图的初始化//
    int i,j;
    for(i=0;i<MAXV;i++)
    {
    for(j=0;j<MAXV;j++)
    G->Edges[i][j]=0;
    G->Visited[i]=0;
    }
    G->VertexN=G->EdgeN=0;
    }
    
    void ReadG(Graph*G) //读入并存储一个图//
    {
    int i,V1,V2;
    scanf("%d%d",&G->VertexN,&G->EdgeN); //用户输入顶点数和边数//
    for(i=0;i<G->EdgeN;i++)
    {
    scanf("%d%d",&V1,&V2); //输入顶点名称,比坐标大11到N)//
    G->Edges[V1-1][V2-1]=G->Edges[V2-1][V1-1]=1;
    }
    }
    
    void DFS(Graph*G,int V)
    { //图G的深度优先搜索//
    int W;
    G->Visited[V]=1; //将访问到的结点进行标记//
    for(W=0;G->VertexN;W++)
    if (G->Edges[V][W]&&!G->Visited[W])
    DFS(G,W);
    }
    
    int CheckG(Graph*G)
    { //检查边的度是否全为偶数//
    int r,i,j;
    for(i=0;i<G->VertexN;i++)
    {
    r=0;
    for(j=0;j<G->VertexN;j++)
    r+=G->Edges[i][j];
    if (r%2) return 0; //发现奇数度的边则返回0//
    }
    return 1; //全是偶数度的边则返回1//
    }
    
    int main()
    {
    Graph *G=(Graph*)malloc(sizeof(Graph));
    InitializeG(G);
    ReadG(G);
    
    printf("%d",CheckG(G));
    return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月10日
  • 已采纳回答 6月9日
  • 修改了问题 6月9日
  • 修改了问题 6月9日
  • 展开全部

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名