#include<iostream>
using namespace std;
const int MAX = 10;
//声明边表结点
struct edge_node
{
int adjvex; //邻接点域,储存该顶点对应的下标
int weight; //权值
edge_node *next; //指向边表下一个结点
};
//声明顶点表结点
struct vertex_node
{
char vertex; //顶点
edge_node *first_edge; //指向边表第一个结点
};
class Graph
{
private:
vertex_node adjlist[MAX]; //存放顶点的数组
int vertex_num; //顶点数
int edge_num; //边数
public:
Graph(); //构造函数
int locate(char ch); //定位
void print(); //打印
};
//定位
int Graph::locate(char ch)
{
int i = 0;
for (i = 0; i < this->vertex_num; i++)
{
if (this->adjlist[i].vertex == ch)
{
break;
}
}
return i;
}
//打印
void Graph::print()
{
int i = 0;
while (this->adjlist[i].first_edge != nullptr && i < this->vertex_num)
{
cout << "顶点:" << this->adjlist[i].vertex;
edge_node *s = nullptr;
s = this->adjlist[i].first_edge;
while (s != nullptr)
{
cout << "->"
<< "(" << s->adjvex
<< "," << s->weight << ")";
s = s->next;
}
i++;
cout << endl;
}
}
//构造函数
Graph::Graph()
{
int i = 0, j = 0, k = 0, w = 0;
cout << "请输入顶点数和边数:" << endl;
cin >> this->vertex_num >> this->edge_num;
cout << "请依次输入顶点:" << endl;
for (i = 0; i < this->vertex_num; i++)
{
cin >> this->adjlist[i].vertex;
this->adjlist[i].first_edge = nullptr;
}
cout << "请输入两个顶点及其权值:" << endl;
for (k = 0; k < this->edge_num; k++)
{
char first, second;
edge_node *s, *e = nullptr;
cin >> first >> second >> w;
i = this->locate(first);
j = this->locate(second);
s = new edge_node;
s->adjvex = j;
s->weight = w;
s->next = this->adjlist[i].first_edge;
this->adjlist[i].first_edge = s;
//无向图
e = new edge_node;
e->adjvex = i;
e->weight = w;
e->next = this->adjlist[j].first_edge;
this->adjlist[j].first_edge = e;
}
}
int main()
{
Graph g;
g.print();
system("pause");
return 0;
}
相关推荐
C++邻接表实现无向图、有向图
/*********************邻接表实现有向图******************/ //邻接表实现有向图缺点:只有出度,没有入度;解决方法:逆邻接表、十字链表 //边节点类 template<class Type> class EdgeNode { public: int adjvex;//邻节点域,存储该节点对应的下标 //int weight;//用于存储权值,非
邻接表详解(C/C++)
一、概念 二、分类 1)无向图的邻接表 2)有向图的邻接表(出弧) 3)有向图的逆邻接表(入弧) 三.步骤 四、代码
c++实现邻接表(附完整源码)
c++实现邻接表(附完整源码)
c++数据结构:图(邻接表)
想更容易的找到入度的话,可以构建逆邻接表:(指向反转)邻接表是图的一种链式结构。
不懂就学之挑战成为WorldQuant Brain顾问的第1天
WorldQuant Brain 是由 WorldQuant 公司开发的一个基于人工智能和机器学习的量化研究平台,旨在帮助量化研究员发现和构建有效的投资策略。WorldQuant 是一家全球领先的量化投资公司,专注于利用数据科学、技术和金融工程开发量化交易策略。
桁架 拓扑优化 matlab程序_拓扑优化在结构轻量化及板壳加筋肋最优布置的应用...
1 拓扑优化简介材料的有效利用一直都是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。结构优化设计通常分为三个层次:(1)拓扑优化:在一个确定的连续区域内寻求结构内部非实体区域位置和数量的最佳配置,寻求结构中的构件布局及节点联结方式最优化,使结构能在满足应力、位移等约束条件下,将外载荷传递到结构支撑位置,同时使结构的某种性态指标达到最优;(2)形状优化:指在保持...
C++图的建立---邻接矩阵-----邻接表
C++图的建立---邻接矩阵-----邻接表
【AIGC】COT思维链:让AI学会拆解问题,像人一样思考
COT思维链的出现,为AI的发展开辟了一条新的道路。它让AI学会了像人类一样思考,将复杂问题分解成简单的步骤,并逐步推理出最终答案。希望我的引导会对你产生启发。
【C++】邻接表
通常用vector其中maxn是节点数量的最大值,adj[v]表示节点v的所有邻居组成的列表。
Crossformer实战:从零开始搭建多变量时间序列预测模型(附ETTh1数据集调参指南)
本文提供了从零开始搭建Crossformer多变量时间序列预测模型的实战指南,并附有详细的ETTh1数据集调参攻略。文章深入解析了Crossformer的核心设计,重点探讨了seg_len和win_size等关键参数对模型性能的影响,并分享了环境配置、训练调试及常见问题的解决方案,帮助开发者高效应用这一前沿深度学习模型。
【手把手教学】YOLOv13的Dilated Reparam Block (DRB) 实现细节与优化技巧
DRB(Dilated Reparam Block)是一种创新的卷积神经网络模块,通过多分支膨胀卷积和结构重参数化技术显著提升模型性能。训练阶段使用不同膨胀率和卷积核大小的并行分支增强特征提取能力,推理阶段则将这些分支融合为单一高效的大核卷积。该方法成功解决了大核卷积的计算复杂度和训练困难等问题,在保持推理效率的同时,使模型准确率提升8.56%,mAP暴涨12.33%。DRB的核心在于训练时复杂、推理时简单的设计哲学,以及膨胀卷积的多尺度特征提取能力,为CNN性能优化提供了新的思路。
邻接表的实现(有向邻接表)、(无向邻接表),基于C++
邻接表的介绍以及邻接表的代码实现
Android插件化和组件化面试题及参考答案
如何使用 Gradle 来管理 Android 项目中的模块依赖? Gradle 是一个强大的构建工具,在 Android 项目中管理模块依赖主要通过以下方式。 首先,在项目的根目录下的 build.gradle 文件中,需要配置仓库。一般会添加如 Google 的 Maven 仓库和 JCenter 等,例如在 repositories 部分添加: repositories { google() jcenter() } 对于模块依赖,在每个模块(例如 app
邻接表法创建无向图(C++实现)
邻接表法创建无向图(C++实现) #include <stdio.h> #include <iostream> using namespace std; #define MAXSIZE 100 //最大顶点数 typedef struct ArcNode{ //边节点信息 int adjvex; //该边所指向...
提示词工程中的上下文隔离
已经进入context的prompt是没有办法让大模型真正的忘记的,但是可以通过prompt技巧强约束模型的后续推理中“不再使用、不再提及、不再引用”某部分提示词,这其实是一种行为抑制(behavior suppression),并不是删除。
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
邻接表实现BFS和DFS C++
邻接表实现BFS和DFS C++ #include <iostream> #include<vector> #include<cstring> #include<cstdio> #include<queue> using namespace std; struct Edge{ int to; int w; }; vector&...
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
C++实现图论邻接表
用C++实现图论中的邻接表,用的STL中vector和list实现 这是AdjList.h文件 #pragma once #include <iostream> #include <list> #include <vector> #include <fstream> #include <cassert> using namespa...
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
c语言邻接表,C++数据结构之实现邻接表
本文实例为大家分享了C++数据结构之实现邻接表的具体代码,供大家参考,具体内容如下一、图的邻接表实现1.实现了以顶点顺序表、边链表为存储结构的邻接表;2.实现了图的创建(有向/无向/图/网)、边的增删操作、深度优先递归/非递归遍历、广度优先遍历的算法;3.采用顶点对象列表、边(弧)对象列表的方式,对图的创建进行初始化;引用 "ObjArrayList.h"头文件,头文件可参看之前博文“数据结构之顺...
Dijkstra实现(邻接表C++版)
Dijkstra实现(邻接表C++版)
邻接表的c++实现 及 Dijkstra算法
邻接表的c++ #define maxSize 5 #define INFINITY 10000 //代表无穷 typedef char Vertex;//节点类型 typedef int edge;//边上权值类型 //边节点 class edgeNode { public: edgeNode(); ~edgeNode(); int adjvex; edge weigh
c++实现邻接表(附带源码)
在图论中,邻接表(Adjacency List)是一种常见的图表示方式,用于存储图的结构。邻接表由一个数组(或哈希表)组成,数组中的每个元素对应图中的一个顶点,每个顶点保存一个链表或其他容器,该链表存储与该顶点直接相连的所有邻接顶点。邻接表适用于稀疏图,因为它能够有效地减少存储空间。
邻接表c++实现及其操作讲解
图的邻接表存储方式 其中,边表中结点是与其相连的顶点表中结点的邻接点 边表结点 //边表结点 typedef struct ArcNode{ int Adjvex;//注意:这个索引值是边表节点自己在数组中的索引值,而不是和它连接顶点的下标。 ArcNode* nextarc;//指向下一个邻接点 int weight; //如果是有权图的话加这条语句,没有就不用加 }Arc...
邻接表无向图(二) - C++实现
邻接表无向图是指通过邻接表表示的无向图。正在上传…重新上传取消上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。上图右边的矩阵是G1在内存中的邻接表示意图。每一个顶点都包含一条链表,该链表记录了"该顶点的邻接点的序号"。例如,第2个顶点(顶点C)包含的链表所包含的节点的数据分别是"0,1,3";而这"0,1,3"分别对应"A,B,D"的序号,"A,B,D"都是C的邻接点。就是通过这种方式记录图
C++实现的邻接表
1. 在学习图的存储方式中,邻接矩阵和邻接表是两种比较常用的存储图的方式,下面使用的是C语言实现的邻接表 2. 具体的实现过程如下: ① 首先使用结构体声明图的结构体,图中顶点的结构体,以及指向下一条边的结构体,这些可以参照严蔚敏版的数据结构来写出具体的数据结构: typedef struct ArcNode{ int adjvex;//该边所指向的节点的位置 struct ArcN...
C++实现图的邻接表
#include #include "malloc.h" using namespace std; #define Max 100 //邻接表实现图的DFS //邻接表每一个链表节点的结构,有一个指向下一个节点的指针,一个存放权值的结构,一个存放节点的信息 typedef struct node { int data; struct node* next; int info; }li
5507



被折叠的 条评论
为什么被折叠?



