邻接表存图
来源:互联网 发布:单片机c语言讲解 编辑:程序博客网 时间:2024/06/04 00:54
// 在(e<<1/2n(n-1))或者边信息较多的情况下,邻接表储存方式具有优越性// 邻接表建立有向图#include<stdio.h>#define maxn 20int Gra[maxn][maxn];struct arcnode{ int adjvex; // 可以开一个指针域,储存边信息 int info; arcnode* next_arc;};struct vnode{ int data; arcnode* firstarc;};int main(){ int vnum; int w; // 边的权值 scanf("%d",&vnum); for(int i=0;i<vnum;i++) { for(int j=0;j<vnum;j++) { scanf("%d",&Gra[i][j]); } } vnode* vset = new vnode[vnum]; for(int i=0;i<vnum;i++){ (vset+i)->data = i ; (vset+i)->firstarc =NULL;}// 初始化顶点 for(int i=0;i<vnum;i++) { for(int j=0;j<vnum;j++) { if(Gra[i][j]!=-1&&Gra[i][j]) { arcnode* p = new arcnode; p->adjvex = j; p->info = Gra[i][j]; p->next_arc = NULL; // printf(" !!! \n"); arcnode* q = (vset+i)->firstarc; if(q == NULL)// 将第一条边加进去; { (vset+i)->firstarc = p; // 将新开辟的边结点赋值给顶点的第一条边 }else{ while(q->next_arc){ q = q->next_arc;} // 找到最后一个加入的边 q->next_arc = p; } } } } for(int i=0;i<vnum;i++) { printf("%d\n",(vset+i)->data); arcnode* p = (vset+i)->firstarc; while(p) { printf("%d %d\n",p->adjvex,p->info); p = p->next_arc; } printf("\n"); } return 0;}
阅读全文
0 0
- 邻接表存图。。。
- 邻接表存图
- 邻接表存图
- 邻接
- 邻接表存图(出边表+入边表)
- 使用邻接表存图并遍历
- 拓扑排序的C++实现(邻接表存图)
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- Linux作业二
- 数组的冒泡排序
- 状压dp 方格取数(1)
- SpringMVC拦截器
- transform实现元素的移动、缩放、旋转、变形
- 邻接表存图
- HDOJ 2555 人人都能参加第30届校田径运动会了
- 折线分割平面 HDU
- 【项目实战】---SQLServer中case when的简单用法
- 深度学习CNN-基本概念
- MVC开发模式
- Linux
- 在阿里云服务器中装wampserver
- 【Python数据挖掘】实用模块之Pandas