数据结构与算法编程题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.hqwc.cn/news/255942.html

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

相关文章

第二十一章

网络通信这一章 基本分为三个部分 网络基础概念和TCP,UDP这三个部分主要如下&#xff1a; 计算机网络实现了堕胎计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是再已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#xf…

12.07

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口设置//去掉表头this->setWindowFlags(Qt::FramelessWindowHint);//重新设置大小this->resize(800,420);//设置背景颜色this->setStyleSheet("background-color:whi…

SmartChart:一站式数据可视化解决方案

在当今的数据驱动的世界中&#xff0c;数据可视化已经成为了一个重要的工具&#xff0c;它可以帮助我们理解复杂的数据集&#xff0c;并从中提取有价值的信息。SmartChart就是这样一个强大的数据可视化工具&#xff0c;它提供了一站式的数据可视化解决方案&#xff0c;无论你是…

FL Studio2024破解版在哪里可以下载?

FL Studio软件全称是Fruity Loops Studio&#xff0c;由于这款软件自身logo长得像水果&#xff0c;所以我们也习惯叫它“水果”。它是一款全功能音频编辑工具&#xff0c;将编曲、剪辑、录音以及混音集为一体的音乐编曲软件&#xff0c;在计算机系统上安装一个FL Studio编曲软件…

Windows server 2019 域环境部署

环境准备 准备3台服务器&#xff0c;配置都是8g2核&#xff0c;50g硬盘&#xff0c;操作系统版本Windows Server 2019 Datacenter 域服务器&#xff1a;adc&#xff0c;192.168.56.120服务器1&#xff1a;server1:&#xff0c;192.168.56.121服务器2&#xff1a;server2&…

【学习笔记】LLM for Education

ChatGPT has entered the classroom: how LLMs could transform education 前言IntroductionThe risks are realEmbracing LLMsIntroducing the AI tutorAugmenting retrievalWill it catch on?总结 前言 一篇来自Nature的文章&#xff0c;探讨了教育行业的不同参与者&#x…

时间序列预测实战(二十五)PyTorch实现Seq2Seq进行多元和单元预测(附代码+数据集+完整解析)

一、本文介绍 本文给大家带来的时间序列模型是Seq2Seq&#xff0c;这个概念相信大家都不陌生了&#xff0c;网上的讲解已经满天飞了&#xff0c;但是本文给大家带来的是我在Seq2Seq思想上开发的一个模型和新的架构&#xff0c;架构前面的文章已经说过很多次了&#xff0c;其是…

Python实现的二叉树结构示例

一、二叉树简介 二叉树是一类比较特殊的树&#xff0c;在二叉树中每个节点最多只有两个孩子&#xff0c;分为左孩子和右孩子&#xff0c;相对于树而言&#xff0c;二叉树的构建和使用都要简单得多。任何一棵树&#xff0c;都可以通过变换转换成一颗二叉树。 在 Python 中&…

数据结构实验任务七:基于广度优先搜索的六度空间理论验证

问题描述 “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论 可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个&#xff0c;也就是 说&#xff0c;最多通过五个人你就能够认识任何一个陌生人。”假如给你一个社交网络图&#xf…

解决:AttributeError: module ‘copy’ has no attribute ‘copy’

解决&#xff1a;AttributeError: module ‘copy’ has no attribute ‘copy’ 文章目录 解决&#xff1a;AttributeError: module copy has no attribute copy背景报错问题报错翻译报错位置代码报错原因解决方法方法一方法二方法三今天的分享就到此结束了 背景 在使用之前的代…

谷歌正式发布最强 AI 模型 Gemini

2023年12月6日&#xff0c;谷歌公司宣布推出其被认为是规模最大、功能最强大的人工智能模型 Gemini。 Gemini将分为三个不同的套件&#xff1a;Gemini Ultra、Gemini Pro和Gemini Nano。 Gemini Ultra被认为具备最强大的能力&#xff0c;Gemini Pro则可扩展至多任务&#x…

RTL编码(2)——模块优化

一、顶层模块的划分 在RTL编码中&#xff0c;我们是以模块为单位进行设计的&#xff0c;模块之间的连接和嵌套关系对于电路结构有着很大的影响。一个好的系统设计中&#xff0c;我们应该使得模块尽量满足以下两个标准&#xff1a; 顶层模块扁平化内部模块层次化 1.1 顶层模块扁…