邻接表的逆邻接表
来源:互联网 发布:男人喜欢被舔么 知乎 编辑:程序博客网 时间:2024/06/07 04:01
/*已知有向图采用邻接表存储,设计算法,求其逆邻接表。*/#include<stdio.h>#include<stdlib.h>#define max 20typedef struct ArcNode{int adjvex; //该弧所指向的顶点的位置struct ArcNode *nextarc; //指向下一条弧的指针 }ArcNode;typedef struct VNode{char data; //顶点信息ArcNode *firstarc; //指向第一条依附该顶点的弧的指针 }VNode,AdjList[max];typedef struct{AdjList vertices;int vexnum,arcnum;}ALGraph;void CreatGraph(ALGraph &G){int i,s,e;ArcNode *p;printf("输入结点数目和边数:");scanf("%d%d",&G.vexnum,&G.arcnum);getchar();printf("输入顶点信息:\n");for(i=1;i<=G.vexnum;i++){scanf("%c",&G.vertices[i].data);G.vertices[i].firstarc=NULL;} getchar();printf("输入一条边依附的起点序号和终点序号:\n");for(i=1;i<=G.arcnum;i++){scanf("%d%d",&s,&e);getchar();p=(ArcNode *)malloc(sizeof(ArcNode));p->adjvex=e;p->nextarc=G.vertices[s].firstarc;G.vertices[s].firstarc=p;}}void PrintGraph(ALGraph G){int i;printf("打印有向图:\n");for(i=1;i<=G.vexnum;i++){printf("%3c",G.vertices[i].data);if(G.vertices[i].firstarc==NULL){printf("\n");continue;}while(G.vertices[i].firstarc){printf("%3d",G.vertices[i].firstarc->adjvex);G.vertices[i].firstarc=G.vertices[i].firstarc->nextarc;}printf("\n");}}void Reverse(ALGraph A,ALGraph &B){//逆邻接表int i,k;ArcNode *p1,*p2;B.vexnum=A.vexnum;B.arcnum=A.arcnum;for(i=1;i<=A.vexnum;i++){scanf("%c",&B.vertices[i].data);B.vertices[i].firstarc=NULL;} for(i=1;i<=A.arcnum;i++){p1=A.vertices[i].firstarc;while(p1){k=p1->adjvex;p2=(ArcNode *)malloc(sizeof(ArcNode));p2->adjvex=i;p2->nextarc=B.vertices[k].firstarc;B.vertices[k].firstarc=p2;p1=p1->nextarc;}}}int main(){ALGraph G,B;CreatGraph(G);PrintGraph(G);Reverse(G,B); PrintGraph(B);return 0;}
阅读全文
0 0
- 邻接表的逆邻接表
- 图的邻接表
- 图的邻接表
- 图的邻接表
- 邻接表的BFS
- 图的邻接表
- 邻接表的实现
- 图的邻接表
- 图的邻接表
- 图的邻接表
- 图的邻接表
- 邻接表的spfa
- 邻接表的创建
- 邻接表的创建
- 邻接表
- 邻接表
- 邻接表
- 邻接表
- 指针与数组
- C++plus笔记4
- rabbitMQ消息服务器学习笔记(java)4消息路由routing
- Material Design控件之CardView
- 高级软件工程 课程总结
- 邻接表的逆邻接表
- jy-大佬作业之旅 (1)
- SpringMVC线程安全问题 小结
- (注解)SpringMVC获取数据
- Python的高级特征(二)——迭代
- JavaScript知识点整理 后续持续更新
- 把一个文件下的文件拷贝覆盖另一个文件下的文件
- Given a non-empty array of integers, return the k most frequent elements.
- opencv 霍夫变换HoughLines