问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求一个将无向带权图的邻接矩阵转化为边集数组的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

算法有问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 已知带权的无向图的邻接矩阵(如图),画出该图及... 对于一个无向图生成的邻接矩阵,已知第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社保查询网上海 上海社保怎么查询公司缴费记录 上海社保个人账户和单位账户怎么在网上查询