=1;--k)if(k!=1)printf("%d-->",que[k]);else{printf("%d"" />
最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

dijkstra算法的C语言实现

来源:动视网 责编:小OO 时间:2025-09-23 23:55:55
文档

dijkstra算法的C语言实现

#include"stdafx.h"#include"stdio.h"#include#defineN6#defineMAX9999voidPath(int*p,intv,inti){intque[N];intt=v;que[t++]=i;inttmp=p[i];while(tmp!=v){que[t]=tmp;t++;tmp=p[tmp];}que[t]=v;for(intk=t;k>=1;--k)if(k!=1)printf("%d-->",que[k]);else{printf("%d"
推荐度:
导读#include"stdafx.h"#include"stdio.h"#include#defineN6#defineMAX9999voidPath(int*p,intv,inti){intque[N];intt=v;que[t++]=i;inttmp=p[i];while(tmp!=v){que[t]=tmp;t++;tmp=p[tmp];}que[t]=v;for(intk=t;k>=1;--k)if(k!=1)printf("%d-->",que[k]);else{printf("%d"
#include "stdafx.h"

#include "stdio.h"

#include

#define N 6

#define    MAX    9999

void Path(int *p,int v,int i)

{

    int que[N];

    int t=v;

    que[t++]=i;

    int tmp=p[i];

    while(tmp!=v)

      {

        que[t]=tmp;

        t++;

        tmp=p[tmp];

       }

    que[t]=v;

for(int k=t;k>=1;--k)

        if(k!=1)

            printf("%d-->",que[k]);

        else

          {  printf("%d",que[k]);

             printf("\\n");

          }

}

int  main()

{

    int  cost[N][N]={     

                          {MAX,MAX,MAX,MAX,MAX,MAX},

                          {MAX,MAX,10,MAX,30,100},

                          {MAX,MAX,MAX,50,MAX,MAX},

                          {MAX,MAX,MAX,MAX,MAX,10},

                          {MAX,MAX,MAX,20,MAX,60},

                          {MAX,MAX,MAX,MAX,MAX,MAX}

                  };

    int S[N];

    int dist[N];

    int p[N];

    int i,j,u,min;

for(i=1;i      {

       S[i]=0;

       dist[i]=cost[1][i];

       if(dist[i]==MAX)

          p[i]=0;

       else      p[i]=1;

      }

    S[1]=1;

for(i=2;i     {  

        min=MAX;

for(j=1;j          {

            if(!S[j]&&dist[j]              {

                u=j;

                 min=dist[j];

               }

           }

         S[u]=1;

        for(j=1;j if(!S[j]&&min+cost[u][j]             {

                 dist[j]= min+cost[u][j]; 

                 p[j]=u;  

              }

       }

for(i=2;i       {

           printf("the shortest line 1--->%d:%d",i,dist[i]);

           printf("顶点遍历:");

           Path(p,1,i);

           

        } 

    

    system("pause");

    

}

文档

dijkstra算法的C语言实现

#include"stdafx.h"#include"stdio.h"#include#defineN6#defineMAX9999voidPath(int*p,intv,inti){intque[N];intt=v;que[t++]=i;inttmp=p[i];while(tmp!=v){que[t]=tmp;t++;tmp=p[tmp];}que[t]=v;for(intk=t;k>=1;--k)if(k!=1)printf("%d-->",que[k]);else{printf("%d"
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top