题目

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

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

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

7 9
0123456
0 2
0 3
0 4
1 3
1 5
2 3
2 5
4 5
5 6

输出样例:

0: 4 3 2
1: 5 3
2: 5 3 0
3: 2 1 0
4: 5 0
5: 6 4 2 1
6: 5

无向图还要生成对称节点

#include <stdio.h>
#include <stdlib.h>
#define MVNum 100                                 //最大顶点数
typedef struct ArcNode{                     //表结点 int adjvex;                                    //邻接点的位置 struct ArcNode * nextarc;      //指向下一个表结点的指针
}ArcNode; typedef struct VNode{ char data;                                  //顶点信息 ArcNode * firstarc;         //指向第一个表结点的指针
}VNode, AdjList[MVNum];                 //AdjList表示邻接表类型 typedef struct{ AdjList vertices;              //头结点数组int vexnum, arcnum;     //图的当前顶点数和边数
}ALGraph; void CreatMGraph(ALGraph *G);     /* 创建图 */
void printGraph(ALGraph G);         /*输出图 */int main()
{ALGraph G;CreatMGraph(&G);printGraph(G);return 0;
}
void CreatMGraph(ALGraph *G)
{int i,j,k;ArcNode *s;scanf("%d%d",&G->vexnum,&G->arcnum);  //输入总顶点数,总边数 getchar();for(i=0;i<G->vexnum;i++){            //输入各点,构造表头节点表 scanf("%c", &G->vertices[i].data);  //输入顶点值 } for(i=0;i<G->vexnum;i++){G->vertices[i].firstarc = NULL;      //初始化表头节点的指针域为NULL }for(k=0;k<G->arcnum;k++) {               //输入各边,构造邻接表  scanf("%d%d",&i,&j);                 //输入一条边的两个节点 s=(ArcNode*)malloc(sizeof(ArcNode));  // 生成一个新节点 s->adjvex=j;s->nextarc=G->vertices[i].firstarc;  //头插法建立新节点 G->vertices[i].firstarc = s;s=(ArcNode*)malloc(sizeof(ArcNode)); //生成另一个对称的新的边节点 s->adjvex=i;s->nextarc=G->vertices[j].firstarc;G->vertices[j].firstarc = s;}
}
void printGraph(ALGraph G)
{int i,j;ArcNode *p;for(i=0;i<G.vexnum;i++){printf("%c:",G.vertices[i].data);for(p=G.vertices[i].firstarc;p;p=p->nextarc){printf(" %d",p->adjvex);}printf("\n");}
}

邻接表法创建无向图(C语言)相关推荐

  1. 图——邻接表法创建无向图算法。走起。。。。

    一.算法步骤: 1.先输入无向图的的总顶点数和边数. 2.输入每个顶点的信息,并把所有顶点结点中的firstarc置为NULL. 3.输入与每条边相关联的两个顶点. 4.找到两个顶点的位置即在顶点结点 ...

  2. 数据结构与算法A实验六图论---7-10 邻接矩阵表示法创建无向图

    采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度. 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数. 输入第二行为顶点的信息,每个顶点只能用一 ...

  3. 图:邻接矩阵表示法创建无向图并深度优先搜索遍历

    无向图样式: 邻接矩阵法类似于用数组储存,一个一维数组储存顶点信息,还有一个二维数组储存邻接矩阵 用邻接矩阵进行无向图的创建过程: 一,输入总顶点数和边数(几个点,几条边) eg:如图所示即为8点,9 ...

  4. C语言邻接表表示法创建无向图并输出

    C语言邻接表表示法创建无向图并输出 邻接表是图的一种链式存储结构,对图的每个顶点建立一个单链表,单链表第一个结点存放顶点信息,其余存放有关边信息. 邻接表由表头结点表和边表组成. 邻接表存储结构 #i ...

  5. 无向图有向图的邻接表法建立

    目录 无向图的邻接表法建立 有向图的邻接表法 无向图的邻接表法建立 要求建立一个无向图,采用邻接表做为存储结构. 例如: 输入信息为:第一行给出图的顶点数n和边数e.第二行给出n个字符,表示n个顶点的 ...

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

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

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

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

  8. 图之邻接表详解(C语言版)

    文章目录 一.定义 二.结构 三.常用操作 四.测试 结语 附录 一.定义 图的邻接表是一种顺序与链式存储相结合的存储方式.下面给出一个示例,以便大家能够理解邻接表这种存储方式:         无向 ...

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

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

最新文章

  1. Solaris 操作
  2. 【流媒體】jrtplib—VS2010 下RTP开源协议库JRTPLIB3.9.1编译
  3. BUU--[MRCTF2020]PixelShooter
  4. 【今日头条】头条号图文发布页面的“扩展链接”是干嘛用的?
  5. TPYBoard:一款可以发挥无限创意的MicroPython开发板
  6. yy神曲url解析php_使用PHP来简单的创建一个RPC服务
  7. mysql 多表查询 优化_Mysql 多表联合查询效率分析及优化
  8. CUDA学习(五十一)
  9. puppet puppet模块、file模块
  10. mysql 字符串搜_mysql – 在表中搜索字符串的SQL查询?
  11. linux 权限分割,sudo使用之实现权限分配
  12. springBoot入门第一章springBoot第一个程序
  13. 三菱PlC程序大型项目QCPU+QD77MS16 宝贝包含一套完整的电气开发系统资料(包含plc程序,触摸屏程序,伺服模块设置程序,程序开发地址规划表)
  14. 六、假设检验:使用Python进行两个正态总体均值的假设检验
  15. 一些临时邮箱服务网站
  16. theos tweak导入自定义类
  17. 小厮吃货:智能便利店不是新零售的风口?!
  18. java: You aren‘t using a compiler supported by lombok, so lombok will not work and has been disabled
  19. Pr 入门教程如何向影片中的剪辑添加过渡效果?
  20. java基于springboot+vue+elementui的外卖点餐配送系统 含骑手功能

热门文章

  1. phpcms v9 ckeditor编辑器右下角增加一键排版按钮插件
  2. dede自动排版 php,DedeCMS正文自动一键排版插件,伪原创必备
  3. 《学习天性》-学习方法总结
  4. 深度学习笔记(七):网络宽度(卷积核个数)的一些想法
  5. php餐厅预定座位系统,一种餐厅座位智能化预订系统的制作方法
  6. 怎么使用手机便签软件将图片上的文字扫描出来
  7. gfsk调制频谱_fsk,gfsk调制解调程序原理
  8. 基于ssm的仓库进销存管理系统的设计开发作品欣赏
  9. macos 是什么键_macOS中的Power Nap是什么?
  10. 【Java调试工具JSHDB的使用】