邻接矩阵getchar()的正确位置(如果你用的C语言的话)

这么简单的东西搞了几个小时,getchar(),%c,我算你们狠

#include<stdio.h>
#define maxint 32577
#define mvnum 100
using namespace std;
typedef char vertextype;
typedef int arctype;
typedef struct 
{
    
    
	vertextype vex[mvnum];
	arctype arc[mvnum][mvnum];
	int vexnum,arcnum;
 }amgraph;
int find(amgraph G,char v)
{
    
    
	int i;
	for(i=0;i<G.vexnum;i++)
	if(G.vex[i]==v)return i;
}
void create(amgraph &G)
{
    
    
    scanf("%d %d",&G.vexnum,&G.arcnum);
	int i,j,k;
	char v1,v2;
	getchar();
	for(i=0;i<G.vexnum;i++)
	scanf("%c",&G.vex[i]); //这里注意%c用的字符,可以吸收空格,
	//所以输入的时候,不要输一个字符就打一个空格
	for(i=0;i<G.vexnum;i++)
	for(j=0;j<G.vexnum;j++)
	G.arc[i][j]=maxint;
	int w;
	getchar();
	for(k=0;k<G.arcnum;k++)
	{
    
    
		scanf("%c%c%d",&v1,&v2,&w);
		getchar();
		i=find(G,v1);j=find(G,v2);
		G.arc[i][j]=w;
		G.arc[j][i]=w;
	}
}
int main()
{
    
    
	amgraph G;
	create(G);
	int i,j;
	for(i=0;i<G.vexnum;i++)
	{
    
    
	for(j=0;j<G.vexnum;j++)
	printf("%d    ",G.arc[i][j]);
	printf("\n");
	}
}

c++版本不用getchar(),如下

#include<stdio.h>
#include<iostream>
#define maxint 0
#define mvnum 100
using namespace std;
typedef char vertextype;
typedef int arctype;
typedef struct 
{
    
    
	vertextype vex[mvnum];
	arctype arc[mvnum][mvnum];
	int vexnum,arcnum;
 }amgraph;
int find(amgraph G,char v)
{
    
    
	int i;
	for(i=0;i<G.vexnum;i++)
	if(G.vex[i]==v)return i;
}
void create(amgraph &G)
{
    
    
    cin>>G.vexnum>>G.arcnum;
	int i,j,k;
	char v1,v2;
	for(i=0;i<G.vexnum;i++)
	cin>>G.vex[i];
	for(i=0;i<G.vexnum;i++)
	for(j=0;j<G.vexnum;j++)
	G.arc[i][j]=maxint;
	int w;
	for(k=0;k<G.arcnum;k++)
	{
    
    
		cin>>v1>>v2>>w;
		i=find(G,v1);j=find(G,v2);
		G.arc[i][j]=w;
		G.arc[j][i]=w;
	}
}
int main()
{
    
    
	amgraph G;
	create(G);
	int i,j;
	for(i=0;i<G.vexnum;i++)
	{
    
    
	for(j=0;j<G.vexnum;j++)
	printf("%d ",G.arc[i][j]);
	printf("\n");
	}
}

猜你喜欢

转载自blog.csdn.net/heipao17/article/details/117708291