邻接表 是图的一种最主要的存储结构,用来描述图上的每一个点。对图的每个顶点建立一个容器,第i个容器中的结点包含顶点Vi的的所有临界顶点。如下图所示,有向图对应的邻接表:

1.数据结构

邻接表用到两个数据结构:

(1)一个是头结点表,用一维数组存储。包括顶点和指向第一个邻接点的指针。

(2)一个是每个顶点Vi的所有邻接点构成的一个线性表,用单链表存储。无向图成为顶点Vi的边表,有向图成为顶点Vi作为尾的出表边,存储的是顶点的序号,和指向下一个边的指针。

头结点:

struct HeadNode //定义头结点
{Node *first;//指向头结点
};

首先创建邻接表表头,初始化每个结点的第一个邻接点first为NULL。

表结点:

struct Node //定义表结点
{int v; //结点编号int w;//权值Node *next; //指向下一个顶点的指针
};

2.创建邻接表 

刚开始的时候把顶点表初始化,指针指向NULL。然后邻接点的表结点插入进来 ,插入到first指向的结点之前。

(1)输入第一条边的结点和权值u,v,w分别是1,3,10之后,创建第一条边。相应的表结点如图所示

    

(2) 输入第二条边的结点和权值u,v,w分别是1,2,12。创建一条边,对应的表结点如图所示:

             

3.输出邻接表

void Print(int n) //输出邻接表
{cout << "---------------------邻接表如下:----------------------" << endl;for (int i=1;i<=n;i++){Node *t=Graph[i].first;cout <<"v" << i<<":   ";while(t!=NULL){cout << "["<<t->v<<"   "<<t->w<<"]   ";t=t->next;}cout << endl;}
}

4.源代码: 

#include <iostream>
using namespace std;
const int N=11111;
struct Node //定义表结点
{int v; //结点编号int w;//权值Node *next; //指向下一个顶点的指针
};struct HeadNode //定义头结点
{Node *first;//指向头结点
};HeadNode Graph[N];
int n; //顶点数
int m;//边数
int i ;
int u;//顶点1
int  v;//顶点2
int w;//顶点之间的权值void InsertEdge(HeadNode &p,int x ,int y) //插入一条边
{Node *q;q=new(Node);q->v=x;q->w=y;q->next=p.first;p.first=q;//注意!此处顺序很重要,必须先链接,再断开。
}void Print(int n) //输出邻接表
{cout << "---------------------邻接表如下:----------------------" << endl;for (int i=1;i<=n;i++){Node *t=Graph[i].first;cout <<"v" << i<<":   ";while(t!=NULL){cout << "["<<t->v<<"   "<<t->w<<"]   ";t=t->next;}cout << endl;}
}int main()
{cout << "请输入顶点数n和边数m"<< endl;cin >> n>> m;for (int i=1;i<=n;i++){Graph[i].first=NULL;}cout << "请输入顶点u,v和顶点之间的权值w" << endl;for (i=0;i<m;i++){cin >> u>> v>> w;InsertEdge(Graph[u],v,w);}Print(n);//输出邻接表return 0;
}

 

5.数据测试 

数据结构——邻接表Adjacency List相关推荐

  1. 数据结构---邻接表的BFS

    数据结构-邻接表的BFS 原理:参考趣学数据结构 代码: 队列代码: #pragma once #define elemType int #define N 100 #include<stdli ...

  2. 数据结构---邻接表的DFS

    数据结构-邻接表的DFS 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define typeNode int / ...

  3. 图(一)之邻接表Adjacency List

    开始攻克图的算法,先从最简单的存储开始实现,本文关于邻接表的实现. 邻接表是图的存储中最简单也是最基本的存储结构,基于链表的思想实现的.在邻接表中,对于中的每个顶点建立一个单链表,第i个单链表中的节点 ...

  4. (数据结构)无向图的邻接多重表(Adjacency Multilist)表示

    邻接多重表(Adjacency Multilist)是无向图的另一种链式存储结构 图的邻接表(Adjacency List)表示 有向图的十字链表(Orthogonal List)表示 我们在使用邻接 ...

  5. 分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构|图的邻接表与深度、广度优先搜索

    线性存储元素时,元素的关系也同时确定了.而非线性数据结构就不同了,需要同时考虑存储数据元素和数据元素的关系. 由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位 ...

  6. Java数据结构——邻接矩阵+邻接表

    文章目录 一.邻接矩阵 二.邻接表 一.邻接矩阵 1. 定义 vexs[](存储顶点)和 arcs[][](存储边关系,叫邻接矩阵)集合.因此,用一个一维数组存放图中所有顶点数据: 用一个二维数组存放 ...

  7. MySQL—通过Adjacency List(邻接表)存储树形结构

    转载自:Mysql通过Adjacency List(邻接表)存储树形结构 今天来看看一个比较头疼的问题,如何在数据库中存储树形结构呢?像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数 ...

  8. 有向图的邻接表表示法

    图的邻接表表示法类似于树的孩子链表表示法.对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency List). 1. ...

  9. 有向图的邻接表描述 c++

    有向图的邻接表表示法 图的邻接表表示法类似于树的孩子链表表示法.对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency ...

  10. 【转载】邻接表表示法

    图的邻接表表示法 图的邻接表表示法类似于树的孩子链表表示法.对于图G中的每个顶点v i ,该方法把所有邻接于v i 的顶点v j 链成一个带头 结点的单链表,这个单链表就称为顶点v i 的邻接表(Ad ...

最新文章

  1. C++中的类属(泛型)机制——模板
  2. Cordova入门系列(三)Cordova插件调用
  3. Java布局怎么加图片组件_java – 将图像缩略图添加到网格中的布局...
  4. 多亏它,让大家做好“山竹”来袭的准备【Make It Real故事汇】
  5. 【纪中集训】2019.08.10【NOIP提高组】模拟 A 组TJ
  6. mysql存储过程的多表查询
  7. 有好事?卡巴斯基推出免费杀毒软件
  8. 使用Python解析JSON详解
  9. 【2019华东交通校赛:H】谁在说谎(思维)
  10. 在线文档转word文档
  11. lumaQQ.net 学习分析
  12. html+js实现分页功能
  13. POJ 3233 Matrix Power Series(java)
  14. java——jui的应用
  15. A+B的各种写法(不是couta+b;)
  16. 使用DistrbutedDataParallel时,nvdiai-smi显示每个进程都占用GPU:0
  17. 最新江西建筑八大员(材料员)模拟真题集及答案解析
  18. 使用信用卡 要避开这些陷阱
  19. css flex布局网页小游戏
  20. 全球及中国晶圆激光打标机行业投资竞争力及需求规模预测报告2022-2027年

热门文章

  1. WSNs的SMAC协议的研究
  2. 【C语言】把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
  3. nextcloud配置邮箱发送邮件
  4. Ubuntu下插入网线无法联网的问题
  5. android N 移除 webview
  6. python实现雪花飘落的效果_简单说 JavaScript实现雪花飘落效果
  7. Linux命令学习-ps命令
  8. 计算机专业老师教案,技能大赛-2015年全国中等职业学校计算机应用基础及计算机类专业课程“创新杯”教师信息化教学设计和说课比赛总结...
  9. vulcan 编程_Vulcan和AUSK之间的比较:如何充分利用Node,React和GraphQL
  10. python如何爬取煎蛋图片(js)