cal-diameter.c

来自「计算网络静态参数的直径c程序(其中的数据是具体的可换成其他的数据)。」· C语言 代码 · 共 60 行

C
60
字号
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 7

 main()
{

static int tag[N],diameter[N][N],p,q ,deg1[N],deg2[N],adjmatrix[N][N];
 float sum;
int i,j,k,l,d;
  adjmatrix[1][2]=adjmatrix[2][1]=1;
  adjmatrix[3][2]=adjmatrix[2][3]=1;
  adjmatrix[5][2]=adjmatrix[2][5]=1;
  adjmatrix[3][4]=adjmatrix[4][3]=1;
  adjmatrix[5][4]=adjmatrix[4][5]=1;
  adjmatrix[5][6]=adjmatrix[6][5]=1;
  sum=0;
for(l=1;l<N;l++)
{ q=1;
 for(j=1;j<N;j++){tag[j]=deg1[j]=deg2[j]=0;}
 p=1; deg1[1]=l; tag[l]=1; d=0; goto L2;

L1: p=k;  for(j=1;j<=p;j++)deg1[j]=deg2[j];
L2: k=0; d++;
  for(i=1;i<=p;i++)
  {
  for(j=1;j<N;j++)
    {if(tag[j]==1)continue;
     if(j==deg1[i])continue;
     if(adjmatrix[deg1[i]][j]==0)continue;
     if(adjmatrix[deg1[i]][j]==1)
       { k++;
         deg2[k]=j;
         q++;
         tag[j]=1;
         diameter[l][j]=d;
       }
     
    }

  if(i==p&&k!=0) goto L1;

  }
  sum=sum+q;    printf("the network is disconnected %d!\n",q);

}
  if((2*sum)!=(N-1)*N) printf("the network is disconnected %f!\n",sum);
sum=0;
 for(i=1;i<N;i++)
  {for(j=1;j<N;j++){printf("%d ",diameter[i][j]); sum=sum+diameter[i][j]; }
   printf("\n");
   }
   sum=sum/(N-1)/(N-2);    printf("%f\n",sum);
   
}



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?