//邻接表
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define INF 999
using namespace std;
typedef struct ANode
{
int adjvex;
struct ANode *nextarc;
int weight;
}ArcNode;
typedef struct VNode
{
ArcNode *firstarc;
}VNode;
typedef struct
{
VNode adjlist[100];
int n,e;
}AdjGraph;
int vis[99]={0};
void CreatAdj(AdjGraph *&G,int A[6][10],int n,int e)
{
int i,j,k;
ArcNode *p;
G=(AdjGraph *)malloc(sizeof(AdjGraph));
for(i=0;i<n;i++)
{
G->adjlist[i].firstarc=NULL;
}
for(i=0;i<n;i++)
{
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=e;
}
void DispAdj(AdjGraph *G)
{
ArcNode *p;
for(int i=0;i<G->n;i++)
{
p=G->adjlist[i].firstarc;
printf(\"%2d:\",i);
while(p!=NULL)
{
printf(\"%2d[%d]->\",p->adjvex,p->weight);
p=p->nextarc;
}
printf(\"^\\n\");
}
}
void Destory(AdjGraph *&G)
{
int i;
ArcNode *pre,*p;
for(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);
}
void dfs(AdjGraph *G,int v)
{
cout<<\" \"<<v<<endl;
vis[v] = 1;
ArcNode *p;
p = G->adjlist[v].firstarc;
while(p!=NULL)
{
if(vis[p->adjvex]==0)
{
dfs(G,p->adjvex);
}
p = p->nextarc;
}
}
int main()
{
memset(vis,0,sizeof(vis));
AdjGraph *G;
int A[6][10]={
{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}};
CreatAdj(G,A,6,10);
for(int i=0;i<6;i++){
for(int j=0;j<10;j++){
cout<<A[i][j]<<\" \";
}
cout<<endl;
}
DispAdj(G);
cout<<endl<<\"dfs\"<<endl;
dfs(G,0);
//Destory(G);
return 0;
}
继续阅读与本文标签相同的文章
上一篇 :
学会这五种编程语言,再来研究DevOps也不迟
下一篇 :
掌握这8步快速进阶java编程
-
200多万市民实现办事“免交证明”,阿里助力晋城数字化升级
2026-05-19栏目: 教程
-
聚游:颠覆传统规则 构筑区块链游戏新生态
2026-05-19栏目: 教程
-
跟并列式人民日报时评学布局谋篇
2026-05-19栏目: 教程
-
阿里开发者技术交流钉钉群汇总【2019】
2026-05-19栏目: 教程
-
9月书讯:别抱怨读书苦,那是你看世界的路
2026-05-19栏目: 教程
