邻接矩阵到邻接表

5000(ms)

10000(kb)

2341 / 5552

假设无向图G采用邻接矩阵存储,编写一个算法输出邻接表。

输入

第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1),接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。数字为0表示不邻接,1表示邻接。

输出

输出图G的邻接表。第一行表示顶点0可直接到达的顶点编号。其他行定义相同。

样例输入

5
0 1 0 1 1
1 0 1 1 0
0 1 0 1 1
1 1 1 0 1
1 0 1 1 0

样例输出

134
023
134
0124
023
#include<stdio.h>
#include<malloc.h>
struct ArcNode//储存数据以及下一个结点的结构体
{int data;struct ArcNode *next;
};
struct HeadNode//储存头结点的结构体
{struct ArcNode *head;
};
void MatGraph(int n,int edges[100][100])//储存邻接矩阵
{for(int i=0;i<n;i++){for(int j=0;j<n;j++) scanf("%d",&edges[i][j]);}
}
void CreateAdj(int n,int edges[100][100],struct HeadNode VNode[])//转换矩阵为链表
{for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(edges[i][j]==1) {struct ArcNode *p;p=(struct ArcNode *)malloc(sizeof(struct ArcNode));p->data=j;p->next=NULL;if(VNode[i].head==NULL) VNode[i].head=p;//如果该序号对应的头结点为空,则储存头结点 else//否则从头结点往后寻找最后一个结点 {struct ArcNode *q=VNode[i].head;while(q->next!=NULL) q=q->next;q->next=p;//连接在最后的结点 }}}}
}
void DispAdj(struct HeadNode VNode[],int n)//输出邻接链表
{for(int i=0;i<n;i++){if(VNode[i].head!=NULL){struct ArcNode *p=VNode[i].head;while(p!=NULL) {printf("%d",p->data);p=p->next;}}printf("\n");}
}
int main()
{int n;scanf("%d",&n);int edges[100][100];MatGraph(n,edges);HeadNode VNode[n];for(int i=0;i<n;i++) VNode[i].head=NULL;CreateAdj(n,edges,VNode);DispAdj(VNode,n);
}

西南科技大学OJ题 邻接矩阵到邻接表1055相关推荐

  1. 西南科技大学OJ题 邻接矩阵存储简单路径1070

    邻接矩阵存储简单路径 5000(ms) 10000(kb) 2197 / 4175 Tags: 邻接矩阵 假设无向图G采用邻接矩阵存储,设计一个算法,输出图G中从顶点u到v的所有简单路径. 输入 简单 ...

  2. 西南科技大学OJ题 顺序表插入操作的实现0943

    顺序表插入操作的实现 建立长度为n的顺序表,在指定的数据元素item之前插入数据元素data.如果指定的数据元素item不存在,则将data插入到顺序表的尾端.(数据类型为整型) 输入 第一行为顺序表 ...

  3. 西南科技大学OJ题 单链表的删除操作的实现0953

    单链表的删除操作的实现 1000(ms) 65535(kb) 2896 / 13622 建立长度为n的单链表,删除第i个结点之前的结点. 输入 第一行为自然数n,表示链式线性表的长度: 第二行为n个自 ...

  4. 西南科技大学OJ题 求最小生成树(Prim算法)1075

    求最小生成树(Prim算法) 1000(ms) 10000(kb) 2256 / 4495 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经 ...

  5. 西南科技大学OJ题 哈夫曼译码0986

    哈夫曼译码 1000(ms) 10000(kb) 1974 / 4142 通常要求根据给定的编码本对密文进行解码.现已给定相应字符的哈夫曼编码,要求根据编码对密文进行解码.(建立哈夫曼树以及编码.主函 ...

  6. 西南科技大学OJ题 above average 0706

    above average 1000(ms) 65535(kb) 1531 / 3045 It is said that 90% of frosh expect to be above average ...

  7. 图的两种存储方式---邻接矩阵和邻接表

    图:图是一种数据结构,由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E),V表示为顶点的集 合,E表示为边的集合. 首先肯定是要对图进行存储,然后进行一系列的操作,下面对图的两种存储方式邻 ...

  8. 邻接矩阵和邻接表的相互转化

    #include <iostream> #define MaxNum 100 using namespace std; //邻接矩阵 typedef struct{int Vex[MaxN ...

  9. 图的两种存储形式(邻接矩阵、邻接表)

    图可以使用两种存储结构,分别是邻接矩阵和邻接表. 注意:一个图所对应的邻接矩阵唯一,所对应的邻接表不唯一 一.邻接矩阵 邻接矩阵以矩阵的形式存储图所有顶点间的关系.邻接矩阵具有以下特点: 1.邻接矩阵 ...

最新文章

  1. C#学习 小知识_多态的简单实现_2018Oct
  2. php中对ASCII码的处理ord() 、chr()
  3. 500个运营工具大全,速度收藏!!!
  4. 设置ie默认版本为ie7
  5. 我的世界服务器物品锁bug,【MOD教程】已知MOD服BUG物品解析
  6. 电脑版微信打开内置浏览器
  7. java讲师助理面试题_面试Java开发师常问到的5个问题(附答案)
  8. Xposed框架初次见面-开发自己的Xposed插件
  9. 浪潮服务器内存故障怎么修复,浪潮GS客户端出现内存溢出和存储空间不足的问题说明和解决方案 | 浪潮888博客...
  10. 湖南北云科技有限公司2023届校园招聘简章
  11. 罗技无线鼠标导致windows 8.1不正常唤醒的问题
  12. 只有毅力和决心无往不利
  13. 外汇天眼:FXOpen宣布降低40%点差,对交易者来说是利好么?
  14. 1009 说反话 (20分)
  15. ttf格式字体怎么安装教程
  16. FreeBSD 下载地址
  17. MATLAB摄像头库外人脸识别考勤系统【摄像头,GUI,库外识别,语音报警,论文】
  18. 成熟敏捷组织中管理者的角色是咋样的?
  19. System.DateUtils 4. IsValidDateTime... 有效时间判断
  20. xp系统同步服务器,xp文件同步服务器地址

热门文章

  1. 深入浅出通信原理知识点3
  2. 抖音为何要自研芯片?
  3. windows下载汉化游戏后出现乱码怎么办?
  4. ap计算机知识点总结,AP Calculus(ABBC)知识点总结
  5. 全球及中国工程机械行业销售规模与投资竞争力研究报告2022版
  6. 如何把视频中的声音提取出来转化成文字?
  7. 东北大学暑期acm夏令营第四天
  8. js手动抛错_javascript如何抛出错误?
  9. 安装Arcgis和ENVI后打开显示有关idl.dll的报错信息?
  10. 围棋算法实现 java