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

📄 shuju2.txt

📁 给定一个图
💻 TXT
字号:
 #include<stdio.h>
int number;

typedef struct
{   
  int q[20];
  int f,r;
} queue;

queue Q;
int nodelist[20][20];
int z[20];
int a,b,n,i,j,x,y;
int finished;
void enq(queue *Q,int x){
Q->q[Q->r]=x;
if(Q->r==19)
	   Q->r=0;
else
		 Q->r++;
	 if(Q->r==Q->f)
		 printf("Overflow!\n");
 }
 front(queue *Q){
	 if(Q->r==Q->f)
        printf("Underflow!\n");
	 else
		 return(Q->q[Q->f]);
 }
 void deq(queue *Q){
	 if(Q->r==Q->f)
		 printf("Underflow!\n");
	 else{
		 if(Q->f==19)
			 Q->f=0;
		 else
			 Q->f++;
	 }
 }
 int qempty(queue Q){
	 if(Q.f==Q.r)
		 return 1;
	 else
		 return 0;
 }
 void readgraph(){
	 printf("\n Please input n:");
	 scanf("%d",&n);
	 printf("Please input nodelist[i][j]:\n");
	 for(i=1;i<=n;i++){
		 for(j=1;j<=n;j++)
			 scanf("%d",&nodelist[i][j]);
	 }
	 printf("\n");
	printf("List-link is bulit\n");
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++)
			printf("%3d",nodelist[i][j]);
		printf("\n");
	}
 }
 void shortest(int a,int b){
	 if(a==b)
		 nodelist[a][a]=2;
	 else{
		 enq(&Q,a);
	     nodelist[a][a]=2;
		 finished=0;
		 while(!qempty(Q)&&!finished){
			 a=front(&Q);
			 deq(&Q);
			 j=1;
			 while((j<=n)&&!finished){
				 if((nodelist[a][j]==1)&&(nodelist[j][j]!=2)){
					 enq(&Q,j);
					 nodelist[j][j]=2;
					 z[j]=a;
				 if(j==b)/*&&(nodelist[a][j]==1))*/
					 finished=1;
				 }
				 if(!finished)
					 j++;
			 }
		 }
		 if(!finished) printf("There is no path.");
 }
}
void writepath(int a,int b){
	i=b;
	while(i!=a){
	printf("%d<-",i);
	i=z[i];
	}
	printf("%d",a);
}
void main()
{
	readgraph();
	printf("Please input a:");
	scanf("%d",&a);
		printf("Please input b:");
     scanf("%d",&b);
		 Q.f=0;Q.r=0;
	 shortest(a,b);
	 if(finished)
		 writepath(a,b);
	 printf("\n");
}

⌨️ 快捷键说明

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