西南科技大学OJ题 邻接矩阵到邻接表1055
邻接矩阵到邻接表
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相关推荐
- 西南科技大学OJ题 邻接矩阵存储简单路径1070
邻接矩阵存储简单路径 5000(ms) 10000(kb) 2197 / 4175 Tags: 邻接矩阵 假设无向图G采用邻接矩阵存储,设计一个算法,输出图G中从顶点u到v的所有简单路径. 输入 简单 ...
- 西南科技大学OJ题 顺序表插入操作的实现0943
顺序表插入操作的实现 建立长度为n的顺序表,在指定的数据元素item之前插入数据元素data.如果指定的数据元素item不存在,则将data插入到顺序表的尾端.(数据类型为整型) 输入 第一行为顺序表 ...
- 西南科技大学OJ题 单链表的删除操作的实现0953
单链表的删除操作的实现 1000(ms) 65535(kb) 2896 / 13622 建立长度为n的单链表,删除第i个结点之前的结点. 输入 第一行为自然数n,表示链式线性表的长度: 第二行为n个自 ...
- 西南科技大学OJ题 求最小生成树(Prim算法)1075
求最小生成树(Prim算法) 1000(ms) 10000(kb) 2256 / 4495 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经 ...
- 西南科技大学OJ题 哈夫曼译码0986
哈夫曼译码 1000(ms) 10000(kb) 1974 / 4142 通常要求根据给定的编码本对密文进行解码.现已给定相应字符的哈夫曼编码,要求根据编码对密文进行解码.(建立哈夫曼树以及编码.主函 ...
- 西南科技大学OJ题 above average 0706
above average 1000(ms) 65535(kb) 1531 / 3045 It is said that 90% of frosh expect to be above average ...
- 图的两种存储方式---邻接矩阵和邻接表
图:图是一种数据结构,由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E),V表示为顶点的集 合,E表示为边的集合. 首先肯定是要对图进行存储,然后进行一系列的操作,下面对图的两种存储方式邻 ...
- 邻接矩阵和邻接表的相互转化
#include <iostream> #define MaxNum 100 using namespace std; //邻接矩阵 typedef struct{int Vex[MaxN ...
- 图的两种存储形式(邻接矩阵、邻接表)
图可以使用两种存储结构,分别是邻接矩阵和邻接表. 注意:一个图所对应的邻接矩阵唯一,所对应的邻接表不唯一 一.邻接矩阵 邻接矩阵以矩阵的形式存储图所有顶点间的关系.邻接矩阵具有以下特点: 1.邻接矩阵 ...
最新文章
- C#学习 小知识_多态的简单实现_2018Oct
- php中对ASCII码的处理ord() 、chr()
- 500个运营工具大全,速度收藏!!!
- 设置ie默认版本为ie7
- 我的世界服务器物品锁bug,【MOD教程】已知MOD服BUG物品解析
- 电脑版微信打开内置浏览器
- java讲师助理面试题_面试Java开发师常问到的5个问题(附答案)
- Xposed框架初次见面-开发自己的Xposed插件
- 浪潮服务器内存故障怎么修复,浪潮GS客户端出现内存溢出和存储空间不足的问题说明和解决方案 | 浪潮888博客...
- 湖南北云科技有限公司2023届校园招聘简章
- 罗技无线鼠标导致windows 8.1不正常唤醒的问题
- 只有毅力和决心无往不利
- 外汇天眼:FXOpen宣布降低40%点差,对交易者来说是利好么?
- 1009 说反话 (20分)
- ttf格式字体怎么安装教程
- FreeBSD 下载地址
- MATLAB摄像头库外人脸识别考勤系统【摄像头,GUI,库外识别,语音报警,论文】
- 成熟敏捷组织中管理者的角色是咋样的?
- System.DateUtils 4. IsValidDateTime... 有效时间判断
- xp系统同步服务器,xp文件同步服务器地址