#include<stdio.h>
#include<malloc.h>
#define INF 32767
#define MAXV 100
typedef char InfoType;
typedef struct
{
int no;
InfoType info;
}VertexType;
typedef struct
{
int edges[MAXV][MAXV];
int n,e;
VertexType vexs[MAXV];
}MatGraph;
typedef struct ANode
{
int adjvex;
struct ANode * nextarc;
int weight;
}ArcNode;
typedef struct Vnode
{
InfoType info;
int count;
ArcNode * firstarc;
}VNode;
typedef struct
{
VNode adjlist[MAXV];
int n,e;
}AdjGraph;
//----邻接矩阵的基本运算算法-----------------------
void CreateMat(MatGraph &g,int A[MAXV][MAXV],int n,int e)
{
int i,j;
g.n=n;g.e=e;
for(i=0;i<g.n;i++)
for(j=0;j<g.n;j++)
g.edges[i][j]=A[i][j];
}
void DispMat(MatGraph g)
{
int i,j;
for(i=0;i<g.n;i++)
{
for(j=0;j<g.n;j++)
if(g.edges[i][j]!=INF)
printf("%4d",g.edges[i][j]);
else
printf("%4s","∞");
printf("\n");
}
}
//----邻接表的基本运算算法-----------------------
void CreateAdj(AdjGraph * &G,int A[MAXV][MAXV],int n,int e)
{
int i,j;
ArcNode * p;
G=(AdjGraph * )malloc(sizeof(AdjGraph));
for(i=0;i<n;i++)
G->adjlist[i].firstarc=NULL;
for(i=0;i<n;j++)
for(j=n=1;j>=0;j--)
if(A[i][j]!=0 && A[i][j]!=INF)
{
p=(ArcNode * )malloc(sizeof(ArcNode));
p->adjvex=j;
p->weight=A[i][j];
p->nextarc=G->adjlist[i].firstarc;
G->adjlist[i].firstarc=p;
}
G->n=n;G->e=n;
}
void DispAdj(AdjGraph * G)
{
ArcNode * p;
for(int i=0;i<G->n;i++)
{
p=G->adjlist[i].firstarc;
printf(" % 3d: ",i);
while (p!=NULL)
{
printf(" % 3d[ % d]→",p->adjvex,p->weight);
p=p->nextarc;
}
printf("∧\n");
}
}
void DestroyAdj(AdjGraph * &G)
{
ArcNode * pre, * p;
for(int i=0;i<G->n;i++)
{
pre=G->adjlist[i].firstarc;
if(pre!=NULL)
{
p=pre->nextarc;
while(p!=NULL)
{
free(pre);
pre=p;p=p->nextarc;
}
free(pre);
}
}
free(G);
}
//#include"graph.cpp"
int main()
{
MatGraph g;
AdjGraph * G;
int A[MAXV][MAXV]={
{0,5,INF,7,INF,INF}, {INF,0,4,INF,INF,INF},
{8,INF,0,INF,INF,9}, {INF,INF,5,0,INF,6},
{INF,INF,INF,5,0,INF}, {3,INF,INF,INF,1,0}};
int n=6,e=10;
CreateMat(g,A,n,e);
printf("(1)图G的邻接矩阵:\n");
DispMat(g);
CreateAdj(G,A,n,e);
printf("(2)图G的邻接表:\n"); DispAdj(G);
printf("(3)销毁图G的邻接表\n");
DestroyAdj(G);
return 1;
}
为什么运行后只有(1)有结果啊
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 - 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7518027
- 这篇博客也不错, 你可以看下【有重复数据】
- 除此之外, 这篇博客: 1.1什么是数据结构?中的 有关 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
对存储在计算机中的数据,最基本的操作有:插入、删除、查找。
这就好比图书馆对书的管理,我们会面临的问题有:
- 新书怎么插入?
- 怎样找到某本指定的书?
- 如何对图书进行分类?如何分配各个不同类别的图书的存放空间?类别应该分多细?
由此类比计算机对数据进行处理,不难理解计算机解决问题的效率,与数据的组织方式密切相关。
解决 无用评论 打赏 举报
悬赏问题
- ¥20 Keil uVision5创建project没反应
- ¥15 mmseqs内存报错
- ¥15 vika文档如何与obsidian同步
- ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
- ¥15 陆空双模式无人机飞控设置
- ¥15 sentaurus lithography
- ¥100 求抖音ck号 或者提ck教程
- ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
- ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
- ¥15 io.jsonwebtoken.security.Keys