数据结构与算法编程题50

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

//参考博客:https://blog.csdn.net/qq_54162207/article/details/117414707#include <iostream>
using namespace std;#define Maxsize 100
#define VertexmMaxNum 20
#define ERROR  0
#define OK     1
typedef string VertexType;
typedef int  EdgeType;typedef struct Graph   //无向图
{VertexType vex[VertexmMaxNum];EdgeType edge[VertexmMaxNum][VertexmMaxNum];int vexnum;     //顶点数int edgenum;  //边数
}Graph;//确定某顶点在G中的位置下标
int locateVex(Graph& G, VertexType v)
{for (int i = 0; i < G.vexnum; i++){if (v == G.vex[i]) return i;}return -1;
}void CreateDG(Graph& G)
{int i = 0, j = 0;cout << "请输入有向图的顶点数和边数:";cin >> G.vexnum >> G.edgenum;cout << "请输入顶点:";for (i = 0; i < G.vexnum; i++){cin >> G.vex[i];}for (i = 0; i < G.vexnum; i++){for (j = 0; j < G.vexnum; j++)G.edge[i][j] = 0;}for (int k = 0; k < G.edgenum; k++){cout << "请输入第" << k + 1 << "条边:";VertexType v1, v2;cin >> v1 >> v2;int i = locateVex(G, v1);int j = locateVex(G, v2);G.edge[i][j] = 1;}
}/*--------打印图的邻接矩阵-----------*/
void PrintfUGraph(Graph G) {//将图的邻接矩阵输出在控制台上for (int i = 0; i < G.vexnum; i++) {cout << "v" << i + 1 << ":";for (int j = 0; j < G.vexnum; j++)cout << G.edge[i][j] << " ";cout << endl;}
}
//2.假设不带权有向图采用邻接矩阵G存储,设计实现以下功能的算法。
//(1)求出图中每个顶点的出度。
//(2)求出图中出度为0的顶点数。
//(3)求出图中每个顶点的入度。
//-------------------------核心代码-------------------------//
void count_chudu(Graph G)
{int count = 0;for (int i = 0; i < G.vexnum; i++){count = 0;for (int j = 0; j < G.vexnum; j++){if (G.edge[i][j] == 1)count++;}cout << G.vex[i] << "的出度的数量为:" << count << endl;}
}void count_chudu_zero(Graph G)
{int zero_count = 0;int count = 0;for (int i = 0; i < G.vexnum; i++){zero_count = 0;for (int j = 0; j < G.vexnum; j++){if (G.edge[i][j] == 0)zero_count++;}if (zero_count == G.vexnum)count++;}cout <<"出度为0的顶点数:" << count << endl;
}void count_rudu(Graph G)
{int count = 0;for (int i = 0; i < G.vexnum; i++){count = 0;for (int j = 0; j < G.vexnum; j++){if (G.edge[j][i] == 1)count++;}cout << G.vex[i] << "的入度的数量为:" << count << endl;}
}
//-------------------------核心代码-------------------------//
//顶点信息
//v1 v2 v3
//边信息
/*
v1 v2
v1 v3
v2 v3
*/
int main(void)
{Graph G;CreateDG(G);  //不带权有向图PrintfUGraph(G);cout << "--------------------求出图中每个顶点的出度--------------------" << endl;count_chudu(G);cout << "--------------------求出图中出度为0的顶点数--------------------" << endl;count_chudu_zero(G);cout << "--------------------求出图中每个顶点的入度--------------------" << endl;count_rudu(G);return 0;
}

在这里插入图片描述

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

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

相关文章

高校需要哪些大数据实训平台?

当前&#xff0c;数据已成为重要的生产要素&#xff0c;大数据产业作为以数据生成、采集、存储、加工、分析、服务为主的战略性新兴产业&#xff0c;是激活数据要素潜能的关键支撑&#xff0c;是加快经济社会发展质量变革、效率变革、动力变革的重要引擎。 泰迪大数据实验…

外置固态硬盘配置

1、插上usb外置硬盘盒 2、邮件我的此“电脑”选择“管理” 3、例如新增的固态硬盘如下&#xff1a; 4、这里我选择mrb(旧模式)而没选guid(新模式) 因为mrb兼容模式更加适合windows、ios等系统 5、右击未分区磁盘&#xff0c;选择新增卷区&#xff0c;一路下一步即可

什么是磁盘克隆?它的作用有哪些?

在数字化时代&#xff0c;数据的安全性和可靠性变得尤为重要。为了应对硬盘损坏、系统故障或升级的需求&#xff0c;磁盘克隆技术成为了一种不可或缺的工具。 什么是磁盘克隆 磁盘克隆又称为驱动器克隆&#xff0c;它是一种将一个硬盘上的所有数据、分区和文件系统完整复制到…

java--枚举

1.枚举 枚举是一种特殊类 2.枚举类的格式 注意&#xff1a; ①枚举类中的第一行&#xff0c;只能写一些合法的标识符(名称)&#xff0c;多个名称用逗号隔开。 ②这些名称&#xff0c;本质是常量&#xff0c;每个常量都会记住枚举类的一个对象。 3.枚举类的特点 ①枚举类的…

圣诞将至—C语言圣诞树代码来啦

文章目录 圣诞将至—C实现语言圣诞树源码 圣诞将至—C实现语言圣诞树 圣诞树 源码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <math.h> #include <stdlib.h> #include <windows.h> #include <time.h> #define PI 3.14159265…

pycharm使用Anaconda中的虚拟环境【我的入门困惑二】

Anaconda的作用 Anaconda的存在&#xff0c;使得一台电脑上可以存在多个不同版本的python和相应的包&#xff0c;这解决了多个项目运行时&#xff0c;所需要的python和包版本不同的问题。 本文内容 今天就来简单说说如何在pycharm使用Anaconda中的虚拟环境。 详细介绍 首先…

flex布局的flex为1到底是什么

参考博客&#xff1a;flex:1什么意思_公孙元二的博客-CSDN博客 flex&#xff1a;1即为flex-grow&#xff1a;1&#xff0c;经常用作自适应布局&#xff0c;将父容器的display&#xff1a;flex&#xff0c;侧边栏大小固定后&#xff0c;将内容区flex&#xff1a;1&#xff0c;内…

docker安装配置prometheus+node_export+grafana

简介 Prometheus是一套开源的监控预警时间序列数据库的组合&#xff0c;Prometheus本身不具备收集监控数据功能&#xff0c;通过获取不同的export收集的数据&#xff0c;存储到时序数据库中。Grafana是一个跨平台的开源的分析和可视化工具&#xff0c;将采集过来的数据实现可视…

php循环遍历删除文件下文件和目录

前言 今天在写一个demo的时候需要循环删除目录下文件。如下想删temp下文件和目录。 具体实现 private function deleteDir($dirPath){if (is_dir($dirPath)) {$contents scandir($dirPath);// 如果是空目录if (count($contents) 2) {rmdir($dirPath);return;}// 不是空目录f…

一分钟教你弄懂KMP算法

问题背景 KMP算法主要应用与字符串的比较&#xff0c;有一个主串&#xff0c;有一个子串&#xff0c;我们要通过一种方式来查看子串是否为主串的一部分。我们通常的想法是&#xff1a;主串和子串左对齐&#xff0c;一个字符一个字符进行比较&#xff0c;如果其中有个字符不匹配…

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

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

GPT开发实战:解决GPT API限速问题

一个健壮的、安全的开放平台的架构设计&#xff0c;必然会针对对外开放的API接口进行速率限制&#xff0c;来保证整体系统的可用性&#xff0c;OpenAI对外的API也不例外&#xff0c;我们可以简单的从官方发现API使用量的限制。【API Doc上的限制】【个人账户里的速率限定以及当…