基于邻接表的图建立(有向图+无向图)
2015-06-06 11:35
323 查看
图的表示(建立)有两种方法:
①邻接矩阵:A(i,j)=1表示i,j存在一条边,空间复杂度O(n^2),稠密图
②邻接表:只记录存在的边,Vector+List的数据结构,稀疏图
邻接矩阵的图建立这里不做赘述,接下来我们看一下邻接表的图建立:
<1>有向图
注意理解头插入节点的过程
<2>无向图
基于有向图,插入两次即可
①邻接矩阵:A(i,j)=1表示i,j存在一条边,空间复杂度O(n^2),稠密图
②邻接表:只记录存在的边,Vector+List的数据结构,稀疏图
邻接矩阵的图建立这里不做赘述,接下来我们看一下邻接表的图建立:
<1>有向图
注意理解头插入节点的过程
int n,m;//n表示城镇个数,m表示道路条数</span> struct LinkNode//列表节点 { int vex; //邻接的结点在数组中的编号 LinkNode* next; }; struct Node//邻接表 { int data; LinkNode* head;//列表头节点 } Adj[maxn]; //生成无向图(邻接表实现)Vector+List void createLink(){ LinkNode *ptr1,*ptr2;//首先声明两个空节点 for(int i=1;i<=n;i++) Adj[i].head=NULL; for(int i=1;i<=m;i++){ ptr1=new LinkNode; scanf("%d",&ptr1->vex); //头插入建表,非常关键,注意理解head的位置 ptr2=new LinkNode; scanf("%d",&ptr2->vex); //有向图头插入建立列表过程,只需一次 ptr2->next=Adj[ptr1->vex].head; Adj[ptr1->vex].head=ptr2; } } int main() { //freopen("input.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF){ //基于邻接表,速度快 createLink(); } return 0; }
<2>无向图
基于有向图,插入两次即可
int n,m;//n表示城镇个数,m表示道路条数 struct LinkNode//列表节点 { int vex; //邻接的结点在数组中的编号 LinkNode* next; }; struct Node//邻接表 { int data; LinkNode* head;//列表头节点 } Adj[maxn]; //生成无向图(邻接表实现)Vector+List void createLink(){ LinkNode *ptr1,*ptr2;//首先声明两个空节点 for(int i=1;i<=n;i++) Adj[i].head=NULL; for(int i=1;i<=m;i++){ ptr1=new LinkNode; scanf("%d",&ptr1->vex); //头插入建表,非常关键,注意理解head的位置 ptr2=new LinkNode; scanf("%d",&ptr2->vex); ptr2->next=Adj[ptr1->vex].head; Adj[ptr1->vex].head=ptr2; //无向图邻接表建立 ptr1->next=Adj[ptr2->vex].head; Adj[ptr2->vex].head=ptr1; } } int main() { //freopen("input.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF){ //基于邻接表,速度快 createLink(); } return 0; }
相关文章推荐
- 渗透技术一瞥(图)
- 图片引发的溢出危机(图)
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- C++实现图的邻接矩阵存储和广度、深度优先遍历实例分析
- C++实现图的邻接表存储和广度优先遍历实例分析
- JavaScript数据结构和算法之图和图算法
- jQuery圆形统计图开发实例
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- java数据结构和算法学习之汉诺塔示例
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- Lua学习笔记之数据结构
- Redis中5种数据结构的使用场景介绍
- 手机短信轰炸(图)
- PHP SPL标准库之数据结构堆(SplHeap)简单使用实例