使用c语言解决计算有向图的度 要求有主函数

时间: 2024-03-18 21:41:53 浏览: 19
好的,以下是使用 C 语言计算有向图的出度和入度的示例代码,包含主函数: ```c #include <stdio.h> #include <stdlib.h> #define MAX_VERTICES 100 // 邻接表中的边结构体 typedef struct EdgeNode { int adjvex; // 邻接点下标 struct EdgeNode *next; // 指向下一个邻接点的指针 } EdgeNode; // 邻接表中的顶点结构体 typedef struct VertexNode { int data; // 顶点数据 EdgeNode *first_edge; // 指向第一条依附该顶点的边的指针 } VertexNode, AdjList[MAX_VERTICES]; // 图结构体 typedef struct { AdjList adj_list; // 邻接表 int num_vertices; // 图中顶点数 int num_edges; // 图中边数 } Graph; // 初始化图 void init_graph(Graph *graph, int num_vertices) { graph->num_vertices = num_vertices; graph->num_edges = 0; for (int i = 0; i < num_vertices; i++) { graph->adj_list[i].data = i; graph->adj_list[i].first_edge = NULL; } } // 添加有向边 void add_directed_edge(Graph *graph, int start, int end) { EdgeNode *new_edge = (EdgeNode *) malloc(sizeof(EdgeNode)); new_edge->adjvex = end; new_edge->next = graph->adj_list[start].first_edge; graph->adj_list[start].first_edge = new_edge; graph->num_edges++; } // 计算有向图中每个顶点的出度和入度 void calc_in_out_degree(Graph *graph, int out_degree[], int in_degree[]) { for (int i = 0; i < graph->num_vertices; i++) { out_degree[i] = 0; in_degree[i] = 0; } for (int i = 0; i < graph->num_vertices; i++) { EdgeNode *p = graph->adj_list[i].first_edge; while (p != NULL) { out_degree[i]++; in_degree[p->adjvex]++; p = p->next; } } } // 主函数 int main() { int num_vertices = 6; Graph graph; init_graph(&graph, num_vertices); add_directed_edge(&graph, 0, 1); add_directed_edge(&graph, 0, 2); add_directed_edge(&graph, 1, 2); add_directed_edge(&graph, 2, 3); add_directed_edge(&graph, 3, 1); add_directed_edge(&graph, 3, 4); add_directed_edge(&graph, 4, 0); add_directed_edge(&graph, 4, 5); int out_degree[num_vertices]; int in_degree[num_vertices]; calc_in_out_degree(&graph, out_degree, in_degree); printf("顶点\t出度\t入度\n"); for (int i = 0; i < num_vertices; i++) { printf("%d\t%d\t%d\n", i, out_degree[i], in_degree[i]); } return 0; } ``` 这段代码创建了一个有向图,然后计算了每个顶点的出度和入度,并输出结果。你可以根据需要修改图的结构和数据,以适应你的实际需求。

相关推荐

最新推荐

recommend-type

C语言标准教程第一章 C语言概论

每一个C源程序都必须有,且只能有一个主函数(main函数)。函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。printf函数是一个由系统定义的标准函数,可在程序中直接调用。 #include "stdio.h" #...
recommend-type

整站程序打听网(wordpress打造cms)-wordpress-cms.rar

计算机系毕业设计、php源码[整站程序]打听网(wordpress打造cms)_wordpress_cms
recommend-type

毕业设计&课设-Matlab中卡尔曼滤波器在电池充电状态估计中的应用.zip

该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
recommend-type

儿童节六一送祝福的网页源代码项目.zip

儿童节六一送祝福的网页源代码项目.zip 儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.zip儿童节六一送祝福的网页源代码项目.
recommend-type

pymol_launcher-2.6-cp312-cp312-win32.whl.zip

pymol_launcher-2.6-cp312-cp312-win32.whl.zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

解释这行代码 c = ((double)rand() / RAND_MAX) * (a + b - fabs(a - b)) + fabs(a - b);

这行代码是用于生成 a 和 b 之间的随机数。首先,它使用 rand() 函数生成一个 [0,1) 之间的随机小数,然后将这个小数乘以 a、b 范围内的差值,再加上 a 和 b 中的较小值。这可以确保生成的随机数大于等于 a,小于等于 b,而且不会因为 a 和 b 之间的差距过大而导致难以生成足够多的随机数。最后,使用 fabs() 函数来确保计算结果是正数。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。