无向图邻接表改为邻接矩阵
来源:互联网 发布:怎么退出手机淘宝账号 编辑:程序博客网 时间:2024/06/12 18:32
#include <stdio.h>#include <string.h>#include <stdlib.h>int a[100][100];//邻接矩阵的载体 typedef struct ArcNode{int adjvex;struct ArcNode *nextarc;}ArcNode; //表结点 typedef struct VNode{char data;ArcNode *firstarc;}VNode,AdjList[20];//头结点 typedef struct{AdjList vertices;int vexnum,arcnum;}ALGraph;//邻接表 int LocateVex(ALGraph G,char e){int i;for(i=0;i<G.vexnum;i++){if(G.vertices[i].data==e)return i;//找到后 返回i }return -1;}void CreatAdList(ALGraph &G){//根据输入的有向图G的顶点数及边数,建立图G的邻接表int i,j,k,tmp;char v1,v2;ArcNode *s,*p;scanf("%d%d",&G.vexnum,&G.arcnum);getchar();for(i=0;i<G.vexnum;i++) //初始化头结点 {scanf("%c",&G.vertices[i].data);getchar();G.vertices[i].firstarc=NULL;}for(i=0;i<G.vexnum;i++)//输出一遍这些头 {printf("%c ",G.vertices[i].data);}printf("\n");for(k=0;k<G.arcnum;k++){//输入边 scanf("%c %c",&v1,&v2);getchar();i=LocateVex(G,v1);j=LocateVex(G,v2);s= (ArcNode *)malloc(sizeof(ArcNode));s->adjvex=j;s->nextarc=NULL;p=G.vertices[i].firstarc;if(!p){G.vertices[i].firstarc = s;}else{while(p->nextarc)p=p->nextarc;p->nextarc=s;}tmp=i;i=j;j=tmp;s= (ArcNode *)malloc(sizeof(ArcNode));s->adjvex=j;s->nextarc=NULL;p=G.vertices[i].firstarc;if(!p){G.vertices[i].firstarc = s;}else{while(p->nextarc)p=p->nextarc;p->nextarc=s;}}}//CreateAdiMatrixvoid trans(ALGraph G){//转换函数 int i,j;ArcNode *p;for(i=0;i<=G.vexnum;i++)//先初始化,全部赋值为0 for(j=0;j<=G.vexnum;j++){a[i][j]=0;}for(i=0;i<G.vexnum;i++){p=G.vertices[i].firstarc;while(p){a[i][p->adjvex]=1;p=p->nextarc;}}}void Output(ALGraph &G){int i,j;for(i=0;i<G.vexnum;i++){for(j=0;j<G.vexnum;j++){printf("%d ",a[i][j]);}printf("\n");}}int main(){ALGraph G;printf("有向图处理篇\n");CreatAdList(G);trans(G);Output(G);return 0;}
阅读全文
0 0
- 无向图邻接表改为邻接矩阵
- 无向图的表示:邻接矩阵和邻接表
- 有向图与无向图的邻接矩阵,邻接表 计算出度与入度
- 无向图的邻接矩阵和邻接表实现各种操作 -- C++语言描述
- 邻接表无向图
- 无向图邻接矩阵
- 邻接矩阵无向图
- 邻接矩阵--无向图
- c语言编程 输出一个无向图的邻接表,邻接矩阵,进行深度和广度优先遍历
- 基于邻接矩阵和邻接表的两种方法实现无向图的BFS和DFS
- 图 邻接矩阵 邻接表
- 无向图的邻接表算法
- 无向图的邻接表算法
- 邻接表无向图的介绍
- 无向图的邻接表
- 用邻接表实现无向图
- 无向图的邻接表储存
- 邻接表无向图 C++详解
- 欢迎使用CSDN-markdown编辑器
- 第六次作业
- 寻找无序数组中第k大的数——快排思想
- 互联网高并发架构技术实践
- R和R Studio安装
- 无向图邻接表改为邻接矩阵
- XYNUOJ 整除的尾数
- 输入一个3位整数,编程计算并输出它的逆序数(例:输入-123,则忽略负号,由123分离出其百位1,十位2,个位3,并计算输出321)
- 顺序表应用6:有序顺序表查询
- 习题1
- POJ-2199 Rate of Return【二分求解一元高次方程】
- 习题3
- codeforces Round House(在环上走的步数最终停到哪里)
- [Numpy] 数组数据的存储和管理