c语言邻接表的构建_C++实现有向图邻接表的构建
本文实例为大家分享了C++实现有向图邻接表的构建代码,供大家参考,具体内容如下
数据结构里面的一道基础题,分享下自己的写法,验证可跑。
#include
#include
const int MAX = 20;
using namespace std;
struct ArcNode { //弧结点
int adjvex = -1; //所指顶点位置
ArcNode *nextarc = nullptr; //下一条狐指针
size_t info = 0; //弧信息
};
struct VNode { //顶点
string data = "0";
ArcNode *firstarc = nullptr; //第一条依附该顶点的弧的指针
};
struct Graph { //图结构
VNode vertices[MAX]; //全部顶点
int vexnum, arcnum; //顶点数和弧数
Graph(int m, int n) :vexnum(m), arcnum(n) {};
Graph() :vexnum(0), arcnum(0) {};
};
int main()
{
int vnum, anum, tempanum = 0;
cout << "输入顶点数:";
cin >> vnum;
cout << "输入弧数:";
cin >> anum;
cout << "\n\n";
Graph G(vnum, anum);
for (int i = 0; i != vnum; ++i) {
cout << "输入结点" << i << "的信息:";
cin >> G.vertices[i].data;
if (tempanum != anum)
cout << "输入依靠此结点的弧的信息(输入-1以停止):\n";
else
cout << "已输入所有弧的信息!\n";
bool first = true;
ArcNode *p, *temp;
for (int j = 0; (j != anum) && (tempanum != vnum); ++j) {
int pointto;
cout << "输入弧" << tempanum << "所指向的顶点位置:";
cin >> pointto;
if (pointto == -1) break;
else {
++tempanum;
if (first == true) {
first = false;
G.vertices[i].firstarc = new ArcNode;
G.vertices[i].firstarc->adjvex = pointto;
p = G.vertices[i].firstarc;
}
else {
temp = new ArcNode;
temp->adjvex = pointto;
p->nextarc = temp;
p = temp;
}
}
}
cout << endl;
}
for (int i = 0; i != anum; ++i) {
cout << "顶点" << i << ": |" << G.vertices[i].data << "|";
if (G.vertices[i].firstarc) {
cout << " -> " << G.vertices[i].firstarc->adjvex;
auto pt = G.vertices[i].firstarc->nextarc;
while (pt) {
cout << " -> " << pt->adjvex;
pt = pt->nextarc;
}
cout << "-> ^";
}
else
cout << " -> ^";
cout << endl;
}
return 0;
}
由于只是单纯构建基本的无权值有向图邻接表,里面的弧结构中弧信息未利用到。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
本文标题: C++实现有向图邻接表的构建
本文地址: http://www.cppcns.com/ruanjian/c/310269.html
c语言邻接表的构建_C++实现有向图邻接表的构建相关推荐
- 不同表结构数据迁移_C语言:数据结构-广义表的存储结构
广义表相对于线性表﹑数组﹑串等线性结构是较为复杂的结构,其元素可以具有不同的结构(可以是原子,也可以是列表),通常采用链式结构存储广义表. (1)表头.表尾链式存储 链式结构中用结点储存列表中的数据元 ...
- c语言机票座位预定系统_C语言实现飞机订票系统
问题描述与题目要求 问题描述: 假定某民航有M个航次的班机,每个航次都只到达一个地方.试为该机场售票处设计一个自动订票和退票系统,要求系统具有以下功能: (1) 订票:若该航次余票大于等于乘客订票数, ...
- 三线表是什么?R语言使用table1包绘制(生成)三线表、构建不分层的三线表
三线表是什么?R语言使用table1包绘制(生成)三线表.构建不分层的三线表 目录
- R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、基于自定义函数构建xgboost文本分类模型
R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.基于自定义函数构建xgboost文本分类模型 目录
- R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(构建自定义函数配置显示均值、标准偏差)实战
R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(构建自定义函数配置显示均值.标准偏差)实战 目录
- R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、xgboost模型预测推理并使用混淆矩阵评估模型、可视化模型预测的概率分布
R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.xgboost模型预测推理并使用混淆矩阵评估模型.可视化模型预测的概率分布 目录
- R语言基于MASS包中的shuttle数据集以及neuralnet包构建神经网络模型
R语言基于MASS包中的shuttle数据集以及neuralnet包构建神经网络模型 目录 R语言基于MASS包中的shuttle数据集以及neuralnet包构建神经网络模型
- R语言使用compareGroups包绘制分组患者基线信息表实战:基于survival包lung数据集
R语言使用compareGroups包绘制分组患者基线信息表实战:基于survival包lung数据集 目录 R语言使
- R语言tidyr包pivot_longer函数、pivot_wider函数数据表变换实战(长表到宽表、宽表到长表)
R语言tidyr包pivot_longer函数.pivot_wider函数数据表变换实战(长表到宽表.宽表到长表) 目录
最新文章
- 从零到百亿级,揭秘科大讯飞广告平台架构演进之路
- uc/os内存管理的理解
- (最小生成树) Networking -- POJ -- 1287
- WindowsPhone设置启动欢迎页面
- [Android] 给图像添加相框、圆形圆角显示图片、图像合成知识
- 手动建立Mysql表实体类技巧
- 获取浏览器高度_QQ浏览器违法收集用户信息,你的浏览器还安全吗?
- 程序员新动向!大龄困惑详解!
- C语言序列是否有序、序列中删除指定数字、序列中整数去重、有序序列合并问题
- loj#2542. 「PKUWC2018」随机游走(MinMax容斥 期望dp)
- 操作class属性的新API--classList
- Java连接程序数据源
- 计算机二级C语言程序设计 第一章 程序设计基本概念
- 计算机数值方法(1):引论
- Java实现中英文词典功能
- 【量化笔记】量价关系分析
- python 将多个文件夹合成一个文件夹
- keep-alive上加v-if导致缓存失效
- MySQL中的insert ignore into讲解
- 动态网站开发(应该怎么做啊)