目录

无向图的邻接表法建立

有向图的邻接表法


无向图的邻接表法建立

要求建立一个无向图,采用邻接表做为存储结构。 例如:

输入信息为:第一行给出图的顶点数n和边数e。第二行给出n个字符,表示n个顶点的数据元素的值。后面是e行,给出每一条边的两个顶点编号。

输出每个顶点的值以及各顶点的邻接点。

输入样例:

​
7 9
ABCDEFG
0 1
0 2
0 6
1 3
1 4
2 5
2 6
3 4
3 6​

输出结果:

代码实现:

#include<stdio.h>
#include<stdlib.h>#define Max 100
typedef struct ArcNode
{int adjvex;struct ArcNode* next;
}ArcNode;typedef struct VNode
{char data;ArcNode* first;
}VNode,AdjList[Max];typedef struct
{AdjList vertices;int vexnum, arcnum;
}ALGraph;void CreatGraph(ALGraph& G)
{int i, j;ArcNode* s;printf("请分别输入顶点个数和边数:");scanf("%d %d", &G.vexnum, &G.arcnum);getchar(); // 千万别忘写--> 收除空格符for (i = 0; i < G.vexnum; i++){scanf("%c", &G.vertices[i].data);G.vertices[i].first = NULL; // 将指向第一个边结点的指针置空}for (int k = 0; k < G.arcnum; k++){scanf("%d %d", &i, &j); // 输入一条边两端的结点所对应的下标值(即两个邻接点的位置)s = (ArcNode*)malloc(sizeof(ArcNode));s->adjvex = j;s->next = G.vertices[i].first; // 头插法G.vertices[i].first = s;s = (ArcNode*)malloc(sizeof(ArcNode));s->adjvex = i;s->next = G.vertices[j].first;G.vertices[j].first = s;/*无向图中的邻接矩阵是对称矩阵*/}
}void PrintGraph(ALGraph G)
{for (int i = 0; i < G.vexnum; i++){printf("%c:", G.vertices[i].data);for (ArcNode* p = G.vertices[i].first; p; p = p->next){printf("%2c", G.vertices[p->adjvex].data);}printf("\n");}
}int main()
{ALGraph G;CreatGraph(G);PrintGraph(G);return 0;
}

有向图的邻接表法

要求建立一个有向图,采用邻接表做为存储结构。 例如:

输入信息为:第一行给出图的顶点数n和边数e。第二行给出n个字符,表示n个顶点的数据元素的值。后面是e行,给出每一条边的两个顶点编号。

输出每个顶点的值以及各顶点的邻接点。

输入样例:

4 4
ABCD
0 1
0 2
1 3
3 2

输出结果:

代码实现:

#include<stdio.h>
#include<stdlib.h>#define Max 100
typedef struct ArcNode
{int adjvex;struct ArcNode* next;
}ArcNode;typedef struct VNode
{char data;ArcNode* first;
}VNode,AdjList[Max];typedef struct
{AdjList vertices;int vexnum, arcnum;
}ALGraph;void CreatGraph(ALGraph& G)
{int i, j;ArcNode* s;printf("请分别输入顶点个数和边数:");scanf("%d %d", &G.vexnum, &G.arcnum);getchar(); // 千万别忘写--> 收除空格符for (i = 0; i < G.vexnum; i++){scanf("%c", &G.vertices[i].data);G.vertices[i].first = NULL; // 将指向第一个边结点的指针置空}for (int k = 0; k < G.arcnum; k++){scanf("%d %d", &i, &j); // 输入一条边两端的结点所对应的下标值(即两个邻接点的位置)s = (ArcNode*)malloc(sizeof(ArcNode));s->adjvex = j;s->next = G.vertices[i].first; // 头插法G.vertices[i].first = s;//非对称矩阵}
}void PrintGraph(ALGraph G)
{for (int i = 0; i < G.vexnum; i++){printf("%c:", G.vertices[i].data);for (ArcNode* p = G.vertices[i].first; p; p = p->next){printf("%2c", G.vertices[p->adjvex].data);}printf("\n");}
}int main()
{ALGraph G;CreatGraph(G);PrintGraph(G);return 0;
}

无向图有向图的邻接表法建立相关推荐

  1. C语言建立有向图的邻接表及其遍历操作

    1 /*C语言建立有向图的邻接表及其遍历操作*/ 2 #include"stdio.h" 3 #include"stdlib.h" 4 //图的邻接矩阵储存结构 ...

  2. 邻接表法创建无向图(C语言)

    题目 本题要求建立一个无向图,采用邻接表做为存储结构. 例如: 输入信息为:第一行给出图的顶点数n和边数e.第二行给出n个字符,表示n个顶点的数据元素的值.后面是e行,给出每一条边的两个顶点编号. 输 ...

  3. 图的存储结构——邻接表法

    图的存储结构--邻接表法 一.邻接表 ​ 由顶点表和边表构成,顶点表由顶点域(data)和指向第一条邻接边的指针(firstarc)构成,边表(邻接表)结点由邻接点域(adjvex)和指向下一条邻接边 ...

  4. 图——图的存储结构(邻接矩阵和邻接表法)

    图的五种存储结构: 1.图的邻接矩阵表示法 图是由顶点和边或弧两部分组成.图的邻接矩阵(Adjacency Matrix)存储方式是用两个数组表示图,一个一维数组存储图中的顶点信息,一个二维数组(邻接 ...

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

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

  6. dijkstra迪杰斯特拉算法(邻接表法)

    算法简易过程: 迪杰斯特拉算法(朴素) O(n^2) G={V,E} V:点集合 E:边集合 初始化时 令 S={某源点ear}, T=V-S= {其余顶点},T中顶点对应的距离(ear, Vi)值若 ...

  7. 图的存储——邻接表法

    文章目录 一.邻接表法 二.复杂度分析(G(V,E)) 1.无向图 2.有向图 总结(和邻接矩阵的对比) 一.邻接表法 使用一个顶点表存储顶点信息,每个顶点之后连接该顶点的相连边的信息(链表). 结构 ...

  8. C/C++二级指针概念及应用(有向图的邻接表(拓扑排序)、有向网图的邻接表、树的孩子表示)

    目录 一.概述 例1: 例2: 代码: 二.实例 1.有向图的邻接表(拓扑排序) 2.有向网图的邻接表 3.树的孩子表示 一.概述 二级指针:指向指针的指针.一般需要修改地址的时候会用到二级指针. 注 ...

  9. 一一计划(Day 14)邻接表法存储图,BFS广度优先遍历,DFS深度优先遍历

    邻接表法存储 邻接表发存储需要时无权无向图.用数组+链表的方式完成 数组用来记录地点,链表来记录每一个地点对应的相邻地点 1.构造一个数据结构来存放数组的序号以及指针用来指向链表 2.创造结点,构建链 ...

最新文章

  1. EXT.JS的PROXY放在哪里,STORE放在哪里,绝对是个技术活儿啊。
  2. Oracle HA 之 Server Pool 实战
  3. 4.9 总结-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授
  4. 如何从机器学习数据中获取更多收益 1
  5. kafka单机模式删除某一个topic的数据,并解决Topic xxxx is marked for deletion....报错
  6. 李大维:互联网人做硬件创业容易产生的七大误解【转载】
  7. Oracle - 查询语句 - 多表关联查询
  8. Linux GCC编译详细
  9. 计算机应用技术个人研修总结,学习应用信息技术的研修体会总结
  10. 浅析游戏中的打击感如何实现
  11. 对于光本身,光走一光年的距离需要多久?————狭义相对论-钟慢效应(时间膨胀)
  12. Billy Belceb病毒编写教程---Win32篇
  13. 计算机截图工具无法运行,win10系统打开截图工具提示“截图工具当前未在计算机上运行”的解决办法...
  14. 【Unityc#专题篇】—基础章题单实践
  15. oCam 中文绿色版 - 免费实用的屏幕录像与截图软件 (制作视频教程/录制直播视频)
  16. highcharts制作3D饼图渐变效果
  17. 2022-2023寒假
  18. 智慧城市应急指挥中心数字化及城市驾驶舱建设方案
  19. 录音转文字怎么弄?分享三个快速录音转文字的方法
  20. nowcoder15162 小H的询问

热门文章

  1. 职场人:薪资该谈论吗?
  2. 论药品包装机械的概念设计 Comment on medicines and chemical reagents package machinery conceptual design
  3. L2正则化Regularization详解及反向传播的梯度求导
  4. 想在线编程么,这几个在线代码编辑器网站适合你
  5. matplotlib绘制柱状图之基本配置——万能模板案例
  6. MySQL关键字union,limit,通用分页
  7. crsctl start/stop  crs 和 crsctl start/stop cluster
  8. 今天买了iRiver的mp3
  9. Apache StringUtils工具类
  10. Rikka with Cake 【多校9 HDU 6681】【欧拉定理+扫描线】