图的邻接表存储

代码及注释如下:

//图的邻接矩阵存储
#include<stdio.h>
#include<string.h>
char vertex[10][10];
int arc[20][20];
int n;
int existArc();//声明函数正确格式
void  verDegree();
void main()
{ 
	 printf("输入顶点总数:\n");
	 scanf("%d",&n);
	 for(int i=0;i<n;i++)
	 {
	  scanf("%s",&vertex[i]);
	 }
	 printf("请输入1代表连通,0代表不连通\n");
	 for(i=0;i<n;i++)
	  for(int j=0;j<n;j++)
	  {
	    if(j==i) continue;
	    printf("%s→%s   ",vertex[i],vertex[j]);
	    scanf("%d",&arc[i][j]);
	  }
	 existArc();//调用函数正确格式
	 verDegree();
	 getchar();
}

int existArc()//两顶点之间是否存在弧线
{
	 char ver1[10],ver2[10]; //变量要定义成数组才可以存放字符串,一维数组只能存放一个字符串,二维数组可存放多个字符串
	 int v1,v2;
	 printf("输入两个顶点看之间是否存在弧线:\n");
	 scanf("%s %s",&ver1,&ver2);
	 for(int i=0;i<n;i++)
	 {
	  if(strcmp(ver1,vertex[i])==0)
			v1=i;  //找出输入顶点所在的下标
	  if(strcmp(ver2,vertex[i])==0)
			v2=i;
	 }
	 if(arc[v1][v2]==1)
		 printf("%s→%s存在弧\n",ver1,ver2);
	 else
		 printf("%s→%s不存在弧\n",ver1,ver2);
	 if(arc[v2][v1]==1)
		 printf("%s→%s存在弧\n",ver2,ver1);
	 else
		 printf("%s→%s不存在弧\n",ver2,ver1);
	 return 0;
}

void  verDegree()//顶点的度
{
	 char ver[10]; //变量要定义成数组才可以存放字符串
	 int sub,Enter=0,Out=0;
	 printf("输入一个顶点查看它的度:\n");
	 scanf("%s",&ver);
	 for(int i=0;i<n;i++)
	 {
		if(strcmp(ver,vertex[i])==0)
			sub=i;	
	 }
	 for(i=0;i<n;i++)
	 {
		if(arc[sub][i]==1)
			Out++;
		if(arc[i][sub]==1)
			Enter++;
	 }
	 printf("%s入度为%d,出度为%d,度为%d",ver,Enter,Out,Out+Enter);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值