⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lianlu.c

📁 计算机网络的链路状态算法,这里是他的核心程序迪捷斯特拉算法的源代码,欢迎下载,自己编写的
💻 C
字号:
#include "stdio.h"
#include "conio.h"
#define NO 10000
main()
{
struct
{int now[100];
 int next[100];	
 int length[100];	
}m[100]={0};
int n,i,r,j,w,a[100][100],s[100][100],b[100]={0},k;
printf("输入节点数n:\nn=");
scanf("%d",&n);
printf("输入有效连接长度,没连接的输入10000:\n");
for(i=0;i<n;i++)
 for(j=i+1;j<n;j++)
  {printf("%d->%d:",i,j);
   scanf("%d",&a[i][j]);
   s[i][j]=a[i][j];
   a[j][i]=a[i][j];
   s[j][i]=a[j][i];
   if(i==j)
   {s[i][j]=0;
    a[i][j]=0;
   }
  }
for(w=0;w<n;w++)
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
  {if(a[i][j]<NO)
   if(i!=j)
   if((w!=i)&&(w!=j))
   if(a[i][j]+s[w][i]<s[w][j])
   s[w][j]=a[i][j]+s[w][i];
  }
for(i=0;i<n;i++)
 for(w=0;w<n;w++)
 {m[i].now[w]=w;
  for(j=0,k=-1;j<n;j++)
  {if(i==w)
  	{m[i].next[w]=w;m[i].length[w]=0;}
  else if((a[i][j]<NO)&&(a[i][j]!=0))
   {b[j]=a[i][j]+s[j][w];
    if(k<0)
    k=j;
    else if(b[j]<b[k])
    k=j;
    m[i].next[w]=k;
    m[i].length[w]=b[k];
   } 
  }
 }
printf("想要查看哪个路由:");
scanf("%d",&r);
printf("  终点    距离   下一节点\n");
for(i=0;i<n;i++) 
{printf("%4d%8d%9d",m[r].now[i],m[r].length[i],m[r].next[i]); 
printf("\n");
}
}

⌨️ 快捷键说明

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