首页

文章

求一个将无向带权图的邻接矩阵转化为边集数组的C程序

发布网友 发布时间:2022-04-20 04:43

我来回答

3个回答

热心网友 时间:2023-08-31 16:58

typedef struct {int vertex[m]; int edge[m][m];}gadjmatrix;

typedef struct node1{int info;int adjvertex; struct node1 *nextarc;}glinklistnode;

typedef struct node2{int vertexinfo;glinklistnode *firstarc;}glinkheadnode;

void adjmatrixtoadjlist(gadjmatrix g1[ ],glinkheadnode g2[ ])

{

int i,j; glinklistnode *p;

for(i=0;i<=n-1;i++) g2[i].firstarc=0;

for(i=0;i<=n-1;i++) for(j=0;j<=n-1;j++)

if (g1.edge[i][j]==1)

{

p=(glinklistnode *)malloc(sizeof(glinklistnode));p->adjvertex=j;

p->nextarc=g[i].firstarc; g[i].firstarc=p;

p=(glinklistnode *)malloc(sizeof(glinklistnode));p->adjvertex=i;

p->nextarc=g[j].firstarc; g[j].firstarc=p;

扩展资料:

数据结构算法注意事项。

算法的设计取决于数据(逻辑)结构,而算法的实现依赖于采用的存储结构。数据的存储结构实质上是它的逻辑结构在计算机存储器中的实现,为了全面的反映一个数据的逻辑结构,它在存储器中的映象包括两方面内容,即数据元素之间的信息和数据元素之间的关系。

不同数据结构有其相应的若干运算。数据的运算是在数据的逻辑结构上定义的操作算法,如检索、插入、删除、更新和排序等。

数据的运算是数据结构的一个重要方面,讨论任一种数据结构时都离不开对该结构上的数据运算及其实现算法的讨论。

数据结构不同于数据类型,也不同于数据对象,它不仅要描述数据类型的数据对象,而且要描述数据对象各元素之间的相互关系。



热心网友 时间:2023-08-31 16:58

#include<stdio.h>
#include<stdlib.h>
#define max 20
#define digit 1
define zero 0
typedef struct{
int num;
char data;
}Vertex;
typedef struct{
intn; //顶点数
inte; //弧数
Vertex vexs[max];
int edges[max][max];
}MGraph;
typedef struct node{
int adjvex;
node *nextarc;
char info;
}ARCNODE; //邻接表的结点结构
typedef struct{
char vexdata;
ARCNODE *firstarc;
}VEXNODE; //邻接表的表头结点
typedef struct{
int vexnum,arcnum; //顶点数、弧数
VEXNODE ve[max];
}ALGraph; //邻接表类型

ALGraph *Creat_alg(){ //创建邻接表
ALGraph *alg;
int i,n,e,b,a;
char ch;
ARCNODE *AR;
alg=(ALGraph*)malloc(sizeof(ALGraph));
printf("输入顶点数:");
scanf("%d",&n);
printf("输入弧数:");
scanf("%d",&e);
alg->vexnum=n;
alg->arcnum=e;
printf("输入顶点信息:\n");
for(i=0;i<n;i++){
scanf("%s",&ch);
alg->ve[i].vexdata=ch;
alg->ve[i].firstarc=NULL;
}
printf("输入弧的信息(弧的两端点):\n");
for(i=0;i<e;i++){
scanf("%d%d",&a,&b);
AR=(ARCNODE*)malloc(sizeof(ARCNODE));
AR->adjvex=b;
AR->info=alg->ve[b].vexdata;
AR->nextarc=alg->ve[a].firstarc;
alg->ve[a].firstarc=AR;
AR=(ARCNODE*)malloc(sizeof(ARCNODE));
AR->adjvex=a;
AR->info=alg->ve[a].vexdata;
AR->nextarc=alg->ve[b].firstarc;
alg->ve[b].firstarc=AR;
}
return alg;
}

void ALGout(ALGraph *alg){ //邻接表输出
int i,n1;
ARCNODE *p;
VEXNODE *q;
n1=alg->vexnum;
for(i=0;i<n1;i++){
q=&alg->ve[i];
printf("%c",q->vexdata);
p=q->firstarc;
while(p!=NULL){
printf("─→");
printf("%c",p->info);
p=p->nextarc;
}
printf("\n");
}
}

MGraph *ALG_change_MG(ALGraph *alg){ //将邻接表转换为邻接矩阵
MGraph *mg;
int i,n1;
mg=(MGraph*)malloc(sizeof(MGraph));
mg->n=alg->vexnum;
mg->e=alg->arcnum;
n1=mg->n;
for(i=0;i<n1;i++){
mg->vexs[i].num=i;
mg->vexs[i].data=alg->ve[i].vexdata;
}
ARCNODE *p;
for(i=0;i<n1;i++){
p=alg->ve[i].firstarc;
while(p!=NULL){
mg->edges[i][p->adjvex]=1;
mg->edges[p->adjvex][i]=1;
p=p->nextarc;
}
}
return mg;
}

void MGout(MGraph *mg){ //输出邻接矩阵
int i,j,k;
k=mg->n;
for(i=0;i<k;i++){
for(j=0;j<k;j++){
if(mg->edges[i][j]==1)
printf("%-5d",digit);
else
printf("%-5d",zero);
}
printf("\n");
}
}

void main(){
MGraph *mg;
ALGraph *alg;
printf("建立无向图的邻接表:\n");
alg=Creat_alg();
printf("邻接表输出:\n");
ALGout(alg);
mg=ALG_change_MG(alg);
printf("邻接矩阵输出:\n");
MGout(mg);
}

热心网友 时间:2023-08-31 16:59

算法有问题
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 已知带权的无向图的邻接矩阵(如图),画出该图及... 对于一个无向图生成的邻接矩阵,已知第A行和第B行... 给了一个无向带权值图,表示他的邻接矩阵的时候是... 7.5 对无向带权图,1)写出它的邻接矩阵,并按普里... 请对下图的无向带权图:1写出它的邻接矩阵,并按普... 无向带权图的邻接表是怎样的? 有向图和无向图的邻接矩阵有什么区别 2020性能最强手机 现在的5g手机哪款比较值得入手? 关于动物和反应器 DN200Spiral Wound gasket,IR & OR Type,CL150,304... GASKET TUPE SPIRAL WOUND 316SS GRAPHITE FILLER,... spiral wound gasket是什么意思 求高手看下垫片:DN100 Gasket Spiral Wound C(O.R... 水处理知识 请高手帮忙翻译一下 印刷品中mrb是什么意思 MBFB膜生物流化床无论在中水回用,工业废水回用技... 饭堂废水成分 碧水源 的mbr项目是什么意思 数据结构:设有下列带权无向图: 带权邻接矩阵的图的邻接矩阵表示法 数据结构,加权无向图邻接矩阵怎么画?(两顶点不... 某不带权无向图如下所示求该图的邻接矩阵并求该图... matlab无向带权图的最短路径 有向图和无向图的有关知识 谁知道创建有向图邻接表与无向图邻接表的区别 已知一个图的邻接矩阵或邻接表,如何判断此图是有向... 某不带权无向图的邻接矩阵如下所示,请回答问题。 无向图和有向图的详细讲解 上海市社保网的网址是什么??? 上海社保个人帐户查询的网址是哪个啊? 上海市人力资源和社会保障网的用户登录在哪里? 查看上海社保缴费记录查询 上海交的社保怎么查询 上海社保查询个人账户缴费明细查询 上海社保查询个人账户登陆 12333社保查询网上海 上海社保怎么查询公司缴费记录 上海社保个人账户和单位账户怎么在网上查询
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com