📄 图.c
字号:
#include"stdio.h"
#include"conio.h"
#define MAX_VERTEX_NUM 20
#define MAX_EDGE_NUM 40
int visited[MAX_VERTEX_NUM];
typedef struct ArcNode
{
int adjvex;
int weight;
struct ArcNode *nextarc;
}ArcNode;
typedef struct VNode
{
int data;
ArcNode *firstarc;
}VNode,AdjList[MAX_VERTEX_NUM];
typedef struct ALGraph
{
AdjList vertices;
int vexnum,arcnum;
int kind;
}ALGraph;
void CreateDG(ALGraph *G)
{
int i,j,k;
ArcNode *p;
printf("创建一个图:\n顶点数:");
scanf("%d",&G->vexnum);
printf("\n\n边数:");
scanf("%d",&G->arcnum);
printf("\n\n");
for(i=0;i<G->vexnum;i++)
{
G->vertices[i].data=i;
G->vertices[i].firstarc=NULL;
}
for(k=0;k<G->arcnum;k++)
{
printf("请输入第 %d 条边:",k+1);
printf("%d%d",i,j);
p=(ArcNode*)malloc(sizeof(ArcNode));
p->adjvex=j;
p->nextarc=G->vertices[i].firstarc;
G->vertices[i].firstarc=p;
}
return;
}
void Disp(ALGraph *G)
{
int i,j;
ArcNode *p;
printf("输出图为:\n");
for(i=0;i<G->vexnum;i++)
{
p=G->vertices[i].firstarc;
j=0;
while(p!=NULL)
{
printf("( %d ,%d)",i,p->adjvex);
p=p->nextarc;
j=1;
}
if(j==1)
printf("\n\n");
}
return;
}
/* void dfs(ALGraph G,int v) //深度优先遍历
{
ArcNode *p;
cout<<v<<" ";
visited[v]=1;
p=G.vertices[v].firstarc;
while(p!=NULL)
{ if(!visited[p->adjvex])
dfs(G,p->adjvex);
p=p->nextarc;
}
return ;
}
void dfs1(ALGraph G)
{
int i;
for(i=0;i<G.vexnum;i++)
if(visited[i]==0)
dfs(G,i);
}*/
main()
{
ALGraph *G;
CreateDG(G);
Disp(G);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -