邻接表
来源:互联网 发布:优化的南洋金珠会掉色 编辑:程序博客网 时间:2024/05/20 10:53
领接表及其实现:
1.why to creat?
用邻接矩阵表示图,当e<n^2的时候,会产生存储空间的浪费(0的存储)。
2.when to use?
邻接表适合存储稀疏矩阵(e<n(n-1)/2),表示形式不唯一,边表结点的链接次序取决于建立邻接表的算法以及边的输入次序。 邻接矩阵表示稠密矩阵,表示形式唯一
3.how to realize?
领接表分为两个部分,表头结点和边表结点 表头结点(vertex (顶点) 数据域(表示结点存储值char);firstedeg 头指针域(指向链表的第一个指针域)) 边表结点(adjvex 邻接点域(表示与相关联头结点的顶点次序);链域(边表结点指向下一个结点)) 无向图的邻接表: ![无向图邻接表的表示](http://img.blog.csdn.net/20161114094849732) 有向图: 出边表: 入边表:
4.the code is~
/*1.定义图的邻接表*//*表头*/#include<stdio.h>#include<stdlib.h> //标准库函数#define M 20 //定义图的最大顶点数/*定义边表结点*/typedef char DataType; //给结点字符类型重命名typedef struct node{ int adjvex; //定义顶点数据域 结点值 struct node *next; //定义表头结点的链表域}EdgeNode;/*定义表头结点*/typedef struct node{ DataType vertex; EdegNode *FirstEdge;}VertexNode;/*定义邻接表的存储结构*/typedef struct { VertexNode adjlist[M]; //将表头结点连接成连续数组 int n,e}LinkedGraph;/*2.创建图的邻接表*/void creat (LinkGraph *g,char *filename,int c){ int i,j,k; //i,j代表存储序号,k为循环变量 EdgeNode *s; //定义边表结构 传入的邻接表的存储结构含有表头结点 表头结点含有边表结点 引用要用三层 不能 FILE *fp; fp=fopen(filename,"r"); if(fp) { fscanf(fp,"%d%d",&g->n,&g->e); //读入边表结构里顶点数和边数 for(i=0;i<g->n;i++) //录入顶点信息 { fscanf(fp,"%d%d",&g->adjlist[i].vretex); //输入文件的顶点值 g->adjlist[i].FirstEdge = NULL; //边表置空 } for(k=0;k<g->e;k++) //建立边表 { fscanf(fp,"%d%d",&i,&j); //输入无序对 s=(EdgeNode*)malloc(sizeof(EdgeNode)); s->adjvex=j; //输入边表结点的序号 s->next=g->adjlist[i].FirstEdge; //将边表结点和头结点连接起来 g->adjlist[i].FirstEdge=s; //将新的结点*s插入顶点边表头部 前插法连接边表结点 } if(c==0) //c用来判断是有向或者无向图 0 无向 { //邻接表中一个边的表示出现两次 所以i,j互换 s=(EdgeNode*)malloc(sizeof(EdgeNode)); s->adjvex=i; s->next=g->adjlist[j].FirstEdge; g->agjlist[j].FirstEdge=s; } } fclose(fp); } else g->n=0; //文件打开失败}
0 0
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- iOS UITableViewController 添加一个固定的不能滚动的控件
- 常用插件
- win7,用vs2010编译libjpeg
- java学习日记_75:集合框架之对象数组和集合的引入
- ORB-SLAM2详解(一)简介
- 邻接表
- 使用 pod install 还是 pod update ?
- GIS 算法 之 拉默-道格拉斯-普克算法(ramer-douglas-peucker)
- mysql中limit用法
- java学习路线图
- STM32 KEIL下的堆栈设置
- tabLayout与viewPager联动
- 点击按钮批量删除,单个编辑
- scala isInstanceOf、asInstanceOf