图的初始化

//图的邻接矩阵储存 
#include
#include
#define maxsize 20 
typedef struct{
    //图的顶点和边的个数 
    int vtex,e;
    //图的顶点的值 
    char dd[maxsize];
    //图的边的顶点 
    int mtx[10][10];
}Mgraph;

//求给定顶点在数组中的位置
int locate(Mgraph *g,char v){
    int i;
    for(i=0;ivtex;i++){
        if(v==g->dd[i]);
        return i;
    }
    return -1;

//初始化无向无权图 
Mgraph creatUDF(){
    Mgraph *g=( Mgraph *)malloc(sizeof(Mgraph));
    
     printf("请输入图的顶点个数:");
     scanf("%d",&g->vtex);
     printf("请输入图的边的个数:");
     scanf("%d",&g->e);
      
    int i,j;
    for(i=0;ivtex;i++){
        for(j=0;je;j++){
        g->mtx[i][j]=0;    
        }
    }    
    
    //给边 
    int m,n;
    for(i=0;ie;i++){
        printf("请输入边为1的顶点:");
        char v1,v2;
        scanf("%c%c",&v1,&v2);
        m=locate(g,v1);
        n=locate(g,v2);
        g->mtx[m][n]=g->mtx[n][m]=1;
    }    
}

//初始化有向无权图
Mgraph creatDF(){
    Mgraph *g=( Mgraph *)malloc(sizeof(Mgraph));
    
     printf("请输入图的顶点个数:");
     scanf("%d",&g->vtex);
     printf("请输入图的边的个数:");
     scanf("%d",&g->e);
      
    int i,j;
    for(i=0;ivtex;i++){
        for(j=0;je;j++){
        g->mtx[i][j]=0;    
        }
    }    
    
    //给边 
    int m,n;
    for(i=0;ie;i++){
        printf("请输入边为1的顶点:");
        char v1,v2;
        scanf("%c%c",&v1,&v2);
        m=locate(g,v1);
        n=locate(g,v2);
        g->mtx[m][n]=1;
    }    

//初始化有向无权图

//初始化有向有权图  

int main(){
    int a;
    printf("请选择要创建的图的类型(0为无向无权图,1为有向无权图,2为有向无权图,3为有向有权图)"); 
     scanf("%d",&a);
     switch(a):
    {
         
         case 0:
             creatUDG();
             break;
         case 1:
             creatDG();
             break;
        case 2:
             creatUDG();
             break;     
        case 3:
             creatUDG();
             break;     
    }

}

//图的邻接矩阵储存 
#include
#include
#define maxsize 20 
typedef struct{
	//图的顶点和边的个数 
	int vtex,e;
	//图的顶点的值 
	char dd[maxsize];
	//图的边的顶点 
	int mtx[10][10];
}Mgraph;

//求给定顶点在数组中的位置
int locate(Mgraph *g,char v){
	int i;
	for(i=0;ivtex;i++){
		if(v==g->dd[i]);
		return i;
	}
	return -1;
} 
//初始化无向无权图 
Mgraph creatUDF(){
	Mgraph *g=( Mgraph *)malloc(sizeof(Mgraph));
	
 	printf("请输入图的顶点个数:");
 	scanf("%d",&g->vtex);
 	printf("请输入图的边的个数:");
 	scanf("%d",&g->e);
 	 
	int i,j;
	for(i=0;ivtex;i++){
		for(j=0;je;j++){
		g->mtx[i][j]=0;	
		}
	}	
	
	//给边 
	int m,n;
	for(i=0;ie;i++){
		printf("请输入边为1的顶点:");
		char v1,v2;
		scanf("%c%c",&v1,&v2);
		m=locate(g,v1);
		n=locate(g,v2);
		g->mtx[m][n]=g->mtx[n][m]=1;
	}	
}

//初始化有向无权图
Mgraph creatDF(){
	Mgraph *g=( Mgraph *)malloc(sizeof(Mgraph));
	
 	printf("请输入图的顶点个数:");
 	scanf("%d",&g->vtex);
 	printf("请输入图的边的个数:");
 	scanf("%d",&g->e);
 	 
	int i,j;
	for(i=0;ivtex;i++){
		for(j=0;je;j++){
		g->mtx[i][j]=0;	
		}
	}	
	
	//给边 
	int m,n;
	for(i=0;ie;i++){
		printf("请输入边为1的顶点:");
		char v1,v2;
		scanf("%c%c",&v1,&v2);
		m=locate(g,v1);
		n=locate(g,v2);
		g->mtx[m][n]=1;
	}	
} 
//初始化有向无权图



//初始化有向有权图  



int main(){
	int a;
	printf("请选择要创建的图的类型(0为无向无权图,1为有向无权图,2为有向无权图,3为有向有权图)"); 
	 scanf("%d",&a);
	 switch(a):
	{
	 	
	 	case 0:
	 		creatUDG();
	 		break;
	 	case 1:
	 		creatDG();
	 		break;
		case 2:
	 		creatUDG();
	 		break;	 
		case 3:
	 		creatUDG();
	 		break;	 
	}

}

你可能感兴趣的:(图论)