c++实现邻接表

数据结构C++使用邻接表实现图 定义邻接表存储的图类。 [实验要求] (1)创建一个邻接表存储的图; (2)返回图中指定边的权值; (3)插入操作:向图中插入一个顶点,插入一条边; (4)删除操作:从图中删除一个顶点,删除一条边; (5)图的广度优先遍历; (6)基于迪杰斯特拉算法求最短路径。【选作】 [截图] 实验例图 邻接表 操作截图 [实现代码] 一共四个文件 :AQueue.h、Graph_Li... 阅读详情
#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++ 图结构邻接表简单实现 参照严蔚敏老师的《数据结构》一书,第7章实现 图结构的邻接表实现方式 表节点: 邻接点域(adjvex),链域(nextarc),数据域(info)。 头结点: 顶点信息(data),链域(firstarc)。 其中,表头节点通常以顺序结构的形式存储,以便于随机访问任一顶点。 下面是具体的实现:#ifndef GRAPHMAT_H #define GRAPHMAT_H#include 阅读详情

相关推荐

C++邻接表实现无向图、有向图

/*********************邻接表实现有向图******************/ //邻接表实现有向图缺点:只有出度,没有入度;解决方法:逆邻接表、十字链表 //边节点类 template<class Type> class EdgeNode { public: int adjvex;//邻节点域,存储该节点对应的下标 //int weight;//用于存储权值,非

weixin_38044916的博客 5507

邻接表详解(C/C++)

一、概念 二、分类 1)无向图的邻接表 2)有向图的邻接表(出弧) 3)有向图的逆邻接表(入弧) 三.步骤 四、代码

莫浅子的博客 4万+

c++实现邻接表(附完整源码)

c++实现邻接表(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 519

c++数据结构:图(邻接表)

想更容易的找到入度的话,可以构建逆邻接表:(指向反转)邻接表是图的一种链式结构。

qq_45303986的博客 3184

不懂就学之挑战成为WorldQuant Brain顾问的第1天

WorldQuant Brain 是由 WorldQuant 公司开发的一个基于人工智能和机器学习的量化研究平台,旨在帮助量化研究员发现和构建有效的投资策略。WorldQuant 是一家全球领先的量化投资公司,专注于利用数据科学、技术和金融工程开发量化交易策略。

Yanbang1的博客 8387

桁架 拓扑优化 matlab程序_拓扑优化在结构轻量化及板壳加筋肋最优布置的应用...

1 拓扑优化简介材料的有效利用一直都是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。结构优化设计通常分为三个层次:(1)拓扑优化:在一个确定的连续区域内寻求结构内部非实体区域位置和数量的最佳配置,寻求结构中的构件布局及节点联结方式最优化,使结构能在满足应力、位移等约束条件下,将外载荷传递到结构支撑位置,同时使结构的某种性态指标达到最优;(2)形状优化:指在保持...

weixin_39525355的博客 1877

C++图的建立---邻接矩阵-----邻接表

C++图的建立---邻接矩阵-----邻接表

m0_63064861的博客 5802

【AIGC】COT思维链:让AI学会拆解问题,像人一样思考

COT思维链的出现,为AI的发展开辟了一条新的道路。它让AI学会了像人类一样思考,将复杂问题分解成简单的步骤,并逐步推理出最终答案。希望我的引导会对你产生启发。

智兔唯新的博客 9002

【C++】邻接表

通常用vector其中maxn是节点数量的最大值,adj[v]表示节点v的所有邻居组成的列表。

Dust的博客 1295

Crossformer实战:从零开始搭建多变量时间序列预测模型(附ETTh1数据集调参指南)

本文提供了从零开始搭建Crossformer多变量时间序列预测模型的实战指南,并附有详细的ETTh1数据集调参攻略。文章深入解析了Crossformer的核心设计,重点探讨了seg_len和win_size等关键参数对模型性能的影响,并分享了环境配置、训练调试及常见问题的解决方案,帮助开发者高效应用这一前沿深度学习模型。

weixin_29281915的博客 318

【手把手教学】YOLOv13的Dilated Reparam Block (DRB) 实现细节与优化技巧

DRB(Dilated Reparam Block)是一种创新的卷积神经网络模块,通过多分支膨胀卷积和结构重参数化技术显著提升模型性能。训练阶段使用不同膨胀率和卷积核大小的并行分支增强特征提取能力,推理阶段则将这些分支融合为单一高效的大核卷积。该方法成功解决了大核卷积的计算复杂度和训练困难等问题,在保持推理效率的同时,使模型准确率提升8.56%,mAP暴涨12.33%。DRB的核心在于训练时复杂、推理时简单的设计哲学,以及膨胀卷积的多尺度特征提取能力,为CNN性能优化提供了新的思路。

FJN110的博客 556

邻接表的实现(有向邻接表)、(无向邻接表),基于C++

邻接表的介绍以及邻接表的代码实现

qq_40059236的博客 6006

Android插件化和组件化面试题及参考答案

如何使用 Gradle 来管理 Android 项目中的模块依赖? Gradle 是一个强大的构建工具,在 Android 项目中管理模块依赖主要通过以下方式。 首先,在项目的根目录下的 build.gradle 文件中,需要配置仓库。一般会添加如 Google 的 Maven 仓库和 JCenter 等,例如在 repositories 部分添加: repositories { google() jcenter() } 对于模块依赖,在每个模块(例如 app

大模型大数据攻城狮的专栏 1185

邻接表法创建无向图(C++实现)

邻接表法创建无向图(C++实现) #include <stdio.h> #include <iostream> using namespace std; #define MAXSIZE 100 //最大顶点数 typedef struct ArcNode{ //边节点信息 int adjvex; //该边所指向...

qq_43473753的博客 4534

提示词工程中的上下文隔离

已经进入context的prompt是没有办法让大模型真正的忘记的,但是可以通过prompt技巧强约束模型的后续推理中“不再使用、不再提及、不再引用”某部分提示词,这其实是一种行为抑制(behavior suppression),并不是删除。

Criss@陈磊 234

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&...

ding_programmer的博客 960

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...

weixin_42099082的博客 617

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

c语言邻接表,C++数据结构之实现邻接表

本文实例为大家分享了C++数据结构之实现邻接表的具体代码,供大家参考,具体内容如下一、图的邻接表实现1.实现了以顶点顺序表、边链表为存储结构的邻接表;2.实现了图的创建(有向/无向/图/网)、边的增删操作、深度优先递归/非递归遍历、广度优先遍历的算法;3.采用顶点对象列表、边(弧)对象列表的方式,对图的创建进行初始化;引用 "ObjArrayList.h"头文件,头文件可参看之前博文“数据结构之顺...

weixin_42405890的博客 1321

Dijkstra实现(邻接表C++版)

Dijkstra实现(邻接表C++版)

ahundredmile的博客 2410

邻接表的c++实现 及 Dijkstra算法

邻接表的c++ #define maxSize 5 #define INFINITY 10000 //代表无穷 typedef char Vertex;//节点类型 typedef int edge;//边上权值类型 //边节点 class edgeNode { public: edgeNode(); ~edgeNode(); int adjvex; edge weigh

x13804709的博客 2121

c++实现邻接表(附带源码)

在图论中,邻接表(Adjacency List)是一种常见的图表示方式,用于存储图的结构。邻接表由一个数组(或哈希表)组成,数组中的每个元素对应图中的一个顶点,每个顶点保存一个链表或其他容器,该链表存储与该顶点直接相连的所有邻接顶点。邻接表适用于稀疏图,因为它能够有效地减少存储空间。

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1133

邻接表c++实现及其操作讲解

图的邻接表存储方式 其中,边表中结点是与其相连的顶点表中结点的邻接点 边表结点 //边表结点 typedef struct ArcNode{ int Adjvex;//注意:这个索引值是边表节点自己在数组中的索引值,而不是和它连接顶点的下标。 ArcNode* nextarc;//指向下一个邻接点 int weight; //如果是有权图的话加这条语句,没有就不用加 }Arc...

陈龙 | JUST DO IT. 1万+

邻接表无向图(二) - 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的邻接点。就是通过这种方式记录图

生活需要深度 2109

C++实现的邻接表

1. 在学习图的存储方式中,邻接矩阵和邻接表是两种比较常用的存储图的方式,下面使用的是C语言实现的邻接表 2. 具体的实现过程如下: ① 首先使用结构体声明图的结构体,图中顶点的结构体,以及指向下一条边的结构体,这些可以参照严蔚敏版的数据结构来写出具体的数据结构: typedef struct ArcNode{ int adjvex;//该边所指向的节点的位置 struct ArcN...

二哈 9855

C++实现图的邻接表

#include #include "malloc.h" using namespace std; #define Max 100 //邻接表实现图的DFS //邻接表每一个链表节点的结构,有一个指向下一个节点的指针,一个存放权值的结构,一个存放节点的信息 typedef struct node { int data; struct node* next; int info; }li

qz530308783的专栏 1574
上一篇: c++实现邻接矩阵
下一篇: c++实现prim算法(最小生成树)
黄色猴子
博客等级 码龄7年 87粉丝 104原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值