无向网邻接表的建立和输出(C语言)
实施效果图片如下:

c语言代码如下:
#include <stdio.h>
#include <stdlib.h>
#define maxvex 100
typedef int EdgeType; /* 边上的权值类型 */
typedef struct
{
EdgeType arc[maxvex][maxvex]; /* 邻接矩阵,看作边表 */
int numnodes, numedges; /* 图中当前的顶点数和边数 */
}MGraph;
typedef struct EdgeNode /* 边表结点 */
{
struct EdgeNode *next; /* 链域,指向下一个邻接点 */
}EdgeNode;
typedef struct vertexnode /* 顶点表结点 */
{
char data[20]; /* 顶点域,存储顶点信息 */
EdgeNode *firstedge;/* 边表头指针 */
}vertexnode, AdjList[maxvex];
typedef struct
{
AdjList adjList;
EdgeType arc[maxvex][maxvex];
int numnodes, numedges; /* 图中当前顶点数和边数 */
}graphAdjList,*GraphAdjList;
int CreateMGraph(MGraph *G,GraphAdjList *G1) /* 无向网图邻接矩阵表示 */
{
*G1 = (GraphAdjList)malloc(sizeof(graphAdjList));
int i,j,w,k;
printf("输入顶点数目:");
scanf("%d",&G->numnodes);
printf("请输入图的边数目:");
scanf("%d",&G->numedges); /* 输入顶点数和边数 */
for(k=1;k<=G->numedges;k++) /* 建立邻接矩阵 */
{
printf("请输入第%d条边连接(vi,vj)的第一个顶点下标i(i=1,2...):",k);
scanf("%d",&i);
printf("请输入第%d条边连接(vi,vj)的第二个顶点下标j(j=1,2...):",k);
scanf("%d",&j);
printf("请输入第%d条边的权值:",k);
scanf("%d",&w);
G->arc[i][j]=w;
G->arc[j][i]=w;
}
for(i=1;i<=G->numnodes;i++)
{
printf("请输入第%d个的顶点信息:",i);
scanf("%s",(*G1)->adjList[i].data);
}
}
void printCreateMGraph(MGraph *G,GraphAdjList *G1)
{int i,j;
printf("顶点序号----------顶点信息------相领顶点(权值)-------\n");
for(i=1;i<=G->numnodes;i++)
{ printf("V%d %s",i,(*G1)->adjList[i].data);
for(j=1;j<=G->numnodes;j++)
{if(!(i==j)&&!(G->arc[i][j]==NULL))
printf("------->%s%d",(*G1)->adjList[j].data,G->arc[i][j]);}
printf("\n");
}
return 1;
}
void menushow()
{
printf(" ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄\n");
printf(" ▄ 0:结束循环退出 ▄\n");
printf(" ▄ 1:创建无向网(用邻接表存储) ▄\n");
printf(" ▄ 2:[从1创建中进行]无向网的邻接表的输出 ▄\n");
printf(" ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄\n");
}
int menuchoose()
{
int num;
printf(" 请输入(0-2):");
scanf("%d",&num);
return num;
}
int main()
{ MGraph G;
GraphAdjList G1;
int running=1;
menushow();
while(running)
{
switch(menuchoose())
{
case 1:
CreateMGraph(&G,&G1);
break;
case 2:
printCreateMGraph(&G,&G1);
break;
}
system("pause");
}
return 0;
}
本文介绍了一种使用C语言实现无向网邻接表的方法,包括创建无向网图邻接矩阵表示、建立邻接矩阵、输入顶点和边信息,以及输出无向网的邻接表。通过具体代码示例,展示了如何操作和展示图数据结构。
513

被折叠的 条评论
为什么被折叠?



