数据结构与算法编程题49

假设不带权有向图采用邻接表G存储,设计实现以下功能的算法。
(1)求出图中每个顶点的出度。
(2)求出图中出度为0的顶点数。
(3)求出图中每个顶点的入度。

#include <iostream>
using namespace std;#define MVnum 100
typedef string VertexType;typedef struct ArcNode
{int adjvex;struct ArcNode* nextarc;int weight;
}ArcNode;typedef struct VNode
{VertexType data;struct ArcNode* firstarc;
}VNode, VNodeList[MVnum];typedef struct
{VNodeList vertices;int vexnum;int edgenum;
}Graph;int locatevex(Graph G, VertexType v)
{for (int i = 0; i < G.vexnum; i++){if (G.vertices[i].data == v) return i;}return -1;
}void CreateDG(Graph& G)
{int i = 0, j = 0;int k = 0;cout << "请输入总顶点数和总边数:";cin >> G.vexnum >> G.edgenum;cout << "输入顶点:";for (i = 0; i < G.vexnum; i++){cin >> G.vertices[i].data;G.vertices[i].firstarc = NULL;}for (int k = 0; k < G.edgenum; k++){VertexType v1, v2;cout << "输入第" << k + 1 << "条边:";cin >> v1 >> v2;i = locatevex(G, v1);j = locatevex(G, v2);ArcNode* p1 = (ArcNode*)malloc(sizeof(ArcNode));if (p1 == NULL){cout << "内存分配失败" << endl;exit(0);}p1->adjvex = j;p1->nextarc = G.vertices[i].firstarc;G.vertices[i].firstarc = p1;}
}/*--------将邻接表输出在控制台上---------*/
void PrintfUGraph(Graph G) 
{ArcNode* p = NULL;for (int i = 0; i < G.vexnum; i++){cout << G.vertices[i].data << ":";p = G.vertices[i].firstarc;while (p != NULL){cout << p->adjvex << "  ";p = p->nextarc;}cout << endl;}
}//-----------------------核心代码-----------------------//
void count_chudu(Graph G)
{	int count = 0;ArcNode* p = NULL;for (int i = 0; i < G.vexnum; i++){count = 0;p = G.vertices[i].firstarc;while (p != NULL){count++;p = p->nextarc;}cout << G.vertices[i].data<< "顶点的出度为" << count << "个"<<endl;}
}int count_chudu_zero(Graph G)
{int count = 0;ArcNode* p = NULL;for (int i = 0; i < G.vexnum; i++){p = G.vertices[i].firstarc;if (p == NULL)count++;}return count;
}void count_rudu(Graph G)
{int count = 0;ArcNode* p = NULL;for (int i = 0; i < G.vexnum; i++){count = 0; //clear count every loopfor (int j = 0; j < G.vexnum; j++){p = G.vertices[j].firstarc;while (p != NULL){if (p->adjvex == i)count++;p = p->nextarc;}}cout << G.vertices[i].data << "的入度的数量为:" << count << endl;}
}
//-----------------------核心代码-----------------------//
// 假设不带权有向图采用邻接表G存储,设计实现以下功能的算法。
//(1)求出图中每个顶点的出度。
//(2)求出图中出度为0的顶点数。
//(3) 求出图中每个顶点的入度。
/*
5 6
v1 v2 v3 v4 v5
v1 v2
v1 v4
v3 v4
v2 v3
v3 v5
v2 v5
*/
int main(void)
{Graph G;CreateDG(G);PrintfUGraph(G);cout << "---------------求出图中每个顶点的出度---------------" << endl;count_chudu(G);cout << "---------------求出图中出度为0的顶点数---------------" << endl;cout<<"求出图中出度为0的顶点数:"<<count_chudu_zero(G)<<endl;cout << "---------------求出图中每个顶点的入度---------------" << endl;count_rudu(G);return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

私域最全养号攻略---微信

微信号的使用规则&#xff1a; 注册新微信、微信实名认证、主动添加好友、面对面建群、被动添加好友、进群限制、朋友圈限制、好友上限 微信权重加分规则&#xff1a; 基础信息是否完整、注册时间、微信使用行为、 微信权重扣分规则&#xff1a; 使用的环境是否正常、部分行为会…

Michael.W基于Foundry精读Openzeppelin第40期——ERC20Burnable.sol

Michael.W基于Foundry精读Openzeppelin第40期——ERC20Burnable.sol 0. 版本0.1 ERC20Burnable.sol 1. 目标合约2. 代码精读2.1 burn(uint256 amount)2.2 burnFrom(address account, uint256 amount) 0. 版本 [openzeppelin]&#xff1a;v4.8.3&#xff0c;[forge-std]&#x…

1.pipenv创建pyqt5虚拟环境

pipenv创建pyqt5虚拟环境 一、安装pipenv ​ cmd输入指令&#xff1a; pip install pipenv二、安装虚拟环境 cmd进入我要创建环境的目录下 我使用以下命令在当前目录下创建虚拟环境&#xff1a; pipenv --python 3.8创建一个基于Python 3.8的虚拟环境&#xff0c;并生成一个…

华为鸿蒙开发——开发及引用静态共享包(HAR)、应用配置文件

文章目录 简述一、创建HAR模块二、编译HAR模块三、应用配置文件&#xff08;Stage模型&#xff09;四、应用配置文件&#xff08;FA模型&#xff09;1、配置文件的内部结构&#xff08;1&#xff09;app&#xff08;2&#xff09;deviceConfig&#xff08;3&#xff09;module …

C - 语言->内存函数

目录 系列文章目录 前言 1. memcpy使⽤和模拟实现 1.2 memcpy函数的模拟实现: 2. memmove 使⽤和模拟实现 2.1memmove的模拟实现&#xff1a; 3. memset 函数的使⽤ 4. memcmp 函数的使⽤ 系列文章目录 ✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff…

uniapp实战 —— 猜你喜欢(含滚动触底分页加载)

效果预览 组件封装 src\components\SUI_Guess.vue <script setup lang"ts"> import { ref, onMounted } from vue import type { GuessItem } from /types/index import { getGuessListAPI } from /apis/index import type { PageParams } from /types/global…

如何使用技术 SEO 优化 Pinterest 富图钉

Pinterest 可以影响搜索引擎排名&#xff0c;尤其是谷歌。不过&#xff0c;它的作用方式与其他搜索引擎优化因素不同。这就是 Google 将图钉放在 nofollow 列表中。但是&#xff0c;它们仍然可以作为搜索引擎优化的一个重要因素。 高质量的图钉具有高分辨率的图片、吸引人的内…

(汇川H5U-A8)Modbus Poll与AutoShop使用RS-485通讯

一、初步认识: AutoShop: Modbus Poll: 1、连接配置 ConnectionSerial PortRS-485转串口,所以是串口Serial SettingsCOM3当你插入串口后,会显示新的一个端口,就是这个端口通讯速率9600与PLC协议配置一致数据长度8与PLC协议配置一致奇偶校验位0与PLC协议配置一致停止位2…

用perl解决小朋友问的2的10000次方是多少的问题

2的10000次方是多少&#xff0c;用perl单行命令搞定&#xff0c; perl -Mbigint -le print 2**10000如果是安装了strawberry perl &#xff0c;在Windows控制台上输入&#xff0c;单行命令的单引号要换成双引号。 perl -Mbigint -le "print 2**10000"在git-bash中执…

Linux sed 正则表达式的分组查找和替换

Linux sed 正则表达式的分组查找和替换。 替换IP:PORT信息中的某一段信息&#xff0c;用于IP:端口信息的脱敏。 替换前 cat a01.txt 10.10.32.82:3100 10.10.22.49:21034 10.15.2.246:61501 10.200.18.89:3100 10.200.18.89:21 替换后&#xff08;-E 和 -r 都是EBR扩展模式…

基于LSTM和N-gram序列的英文文本生成(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

echarts图之 底部滚动横轴 缩放图形大小

//折线图-堆叠面积图function pileLineChart(odata, dom){//放大缩小的代码startvar dataZoom [],y240;if(odata.xData.length > 7){dataZoom [{show: true,realtime: true,startValue:0, endValue:5,left:"center",top:"auto",right:"auto"…

SAAS版技术中台必备【智能Print打印】系统

今天给大家介绍一个&#xff0c;全网唯一智能打印系统。 系统特色&#xff1a; 1帮助企业&#xff0c;工业&#xff0c;连接多种打印设备管理&#xff1b; 2.跨系统连接打印设备&#xff0c;进行数据传输 3.打通企业内部所有系统打印功能 4.跨越技术壁垒&#xff1b;使用简…

主食罐头哪个牌子好?猫主食罐头品牌分享

进口的猫罐头在近期确实经历了一些困难。由于疫情的影响&#xff0c;许多货品无法正常进口&#xff1b;而最近禽流感的问题也对备受好评的德罐品牌造成了重大冲击。 然而&#xff0c;我们国内生产的猫罐头产品在这段时间展现出了出色的表现。我们推出了许多优质产品&#xff0…

生成器简述 - python 基础进阶知识点补全(一)

可迭代对象&#xff1a; 可以用于for ... in ..循环对对象都是可迭代对象&#xff0c;比如&#xff1a; list tuple dict set 可以迭代的对象就是可迭代对象&#xff0c;python 中一切都是对象&#xff0c;在这里主要说的是变量 a [1,2,3] b (1,2,3,) c "1234&q…

文献速递:多模态影像组学文献分享:生成一种多模态人工智能模型以区分甲状腺良性和恶性滤泡性肿瘤:概念验证研究

文献速递&#xff1a;多模态影像组学文献分享&#xff1a;生成一种多模态人工智能模型以区分甲状腺良性和恶性滤泡性肿瘤&#xff1a;概念验证研究 文献速递介绍 近年来&#xff0c;人工智能&#xff08;AI&#xff09;领域日益被探索&#xff0c;作为一种增强传统医学诊断和…

Failed to resolve org.junit.platform:junit-platform-launcher:1.9.3

springboot 跑 unit test 的时候&#xff0c;如果报错如题的话&#xff0c;可以更改idea 里的 Settings ——> HTTP Proxy 配置为&#xff1a;Auto-detect proxy settings

Google 发布最强大模型Gemini,能力与GPT-4相当

一、Gemini 介绍 Gemini 是一个多模式模型系列&#xff0c;在图像、音频、视频和文本领域展示了真正强大的功能。其中功能最强大的模型 Gemini Ultra 在 32 个基准测试中的 30 个中提升了最先进水平&#xff0c;其中包括 12 个流行文本和推理基准测试中的 10 个、9 个图像理解…

让工作更高效,那些不能错过的8款泳道图绘制工具

在现代企业的运营管理中&#xff0c;泳道图扮演了至关重要的角色。这种独特的图表工具以其直观、清晰的特点&#xff0c;帮助我们理解和改进复杂的工作流程&#xff0c;从而提升效率。本文将为你分享8款实用且高效的泳道图绘制工具&#xff0c;它们能够帮助你轻松创建出专业级别…

Java程序员,你掌握了多线程吗?【文末送书】

目录 摘要 01、多线程对于Java的意义 02、为什么Java工程师必须掌握多线程 03、Java多线程使用方式 04、如何学好Java多线程 参与方式&#x1f947; 推荐一个人工智能学习网站 https://www.captainbed.cn/bear 摘要 互联网的每一个角落&#xff0c;无论是大型电商平台的…