数据结构之图的存储结构——动态邻接表
来源:互联网 发布:九回时间旅行 知乎 编辑:程序博客网 时间:2024/05/16 04:44
邻接表是图的一种链式存储结构。对于图G中每个定点Vi,把所有邻接于Vi的顶点Vj链成一个单链表,这个单链表称为顶点Vi邻接表。
邻接表有三种实现方法,分别为动态建表实现,使用STL中的vector模拟链表实现和静态建表实现。
动态建表中建立一个VNode的数组就可以访问每个顶点的邻接表。
动态建表要求对于每个读入的边数据新建一个EdgeNode对象,加到对应的VNode的邻接表里,同时,需要动态申请内存。在样例实现中,将新节点加到了链表的头部。
对于动态建立的邻接表,它的时间和空间效率比较高,但是这些内存的释放是个问题,判断任意两个顶点(Vi和Vj)之间是否有边相连效率低,需要搜索第i个和第j个链表。
#include<iostream.h>#include<stdlib.h>#include<algorithm>const int maxn=100;//数据结构//**********************************struct EdgeNode //邻接表结点{int to;//终点int w;//权值EdgeNode *next;//指向下一条的指针};struct VNode//起点表结点{int from;//起点EdgeNode *first;//邻接表头指针};VNode Adjlist[maxn];//整个图的邻接表//**********************************int main(){int i,j,w;int n=10,m=10;memset(Adjlist,NULL,sizeof(Adjlist)); //初始化邻接表为NULLfor(int t=1;t<=m;t++){cin>>i>>j>>w;EdgeNode *p=new EdgeNode();p->to=j;p->w=w;p->next=Adjlist[i].first;Adjlist[i].first=p;}for(i=1;i<=n;i++){for(EdgeNode * k=Adjlist[i].first;k!=NULL;k=k->next) //打印出起点为i的所有边{cout<<i<<' '<<k->to<<' '<<k->w<<endl;}}return 0;}
- 数据结构之图的存储结构——动态邻接表
- 数据结构:图的存储结构之邻接表
- 大话数据结构十九:图的存储结构之邻接表
- 数据结构:图的存储结构之邻接表
- 数据结构:图的存储结构之邻接表
- 数据结构:图的存储结构之邻接表
- 数据结构:图的存储结构之邻接表
- 数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 图的存储结构之邻接表
- 再回首,数据结构——图的常用术语,邻接矩阵、邻接表存储结构
- 数据结构--无向图的邻接多重表存储结构
- 大话数据结构二十一:图的存储结构之邻接多重表
- 【第十一周】数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 第十一周 项目一 数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)
- 数据结构—图的存储—邻接表和邻接矩阵
- 数据结构——图的存储 邻接表
- 图的存储结构——邻接表的建立
- 方格取数
- 在html中,怎么改变<table><form>在页面显示的位置?
- 50,C++(04)
- linux软件安装卸载
- Android中设置onTouch事件后listview产生点击变长按、不能滚动的的怪异现象
- 数据结构之图的存储结构——动态邻接表
- latex中的希腊字母
- hdu4771 Stealing Harry Potter's Precious 亚洲区域赛杭州赛区第二题题解
- 《编程之美》:黑球,白球各100,问最后剩下一个是黑球的概率
- jQuery Global jQuery event
- 求平均数 (x&y)+((x^y)>>1)原理
- Oracle sql语句执行顺序
- 高斯消元
- 网上流传的保存图片的代码,菜鸟正在学习中