#ifndef _G_H
#define _G_H
typedef char g_data_t;
#define N 1024
typedef struct sqg{
g_data_t v_buf[N]; //存储顶点
int e_buf[N][N]; //存储边
int v_number; //标记顶点个数
int e_number; //标记边的个数
}sqg_node,*sqg_pnode;
//创建图的空间
sqg_pnode create_space();
//填写图的值
int create_sqg(sqg_pnode G);
//打印图的内容
int show_sqg(sqg_pnode G);
#endif
///
#include
#include
#include "g.h"
//创建图的空间
sqg_pnode create_space()
{
sqg_pnode G = (sqg_pnode)malloc(sizeof(sqg_node));
if(NULL == G)
{
printf("malloc is default\n");
return NULL;
}
G->v_number = 0;
G->e_number = 0;
return G;
}
//填写图的值
int create_sqg(sqg_pnode G)
{
int i,j;
//输入顶点个数
printf("input v_number->");
scanf("%d", &(G->v_number));
getchar();
//给顶点赋值
printf("input v_data->");
for(i = 0; i < G->v_number; i++)
{
scanf("%c", G->v_buf+i);
//scanf("%c", &(G->v_buf[i]));
}
getchar();
//初始化二维数组
for(i = 0; i < G->v_number; i++)
for(j = 0; j < G->v_number; j++)
{
//对角线为0
if(i == j)
G->e_buf[i][j] = 0;
else
G->e_buf[i][j] = 8888; //其余赋值为无穷
}
//输入边的个数
printf("input e_number->");
scanf("%d", &(G->e_number));
//输入边的数据
printf("input e_data head tail w ->");
int head,tail,w;
for(i = 0; i < G->e_number; i++)
{
scanf("%d%d%d", &head,&tail,&w);
G->e_buf[head][tail] = w; //有相图
//G->e_buf[tail][head] = w; //无向图需要加一句
}
return 0;
}
//打印图的内容
int show_sqg(sqg_pnode G)
{
//遍历一维数组
int i,j;
printf("v_data is \n");
for(i = 0; i < G->v_number; i++)
{
printf("%c ", G->v_buf[i]);
}
printf("\n");
//遍历二维数组
printf("e_data is\n");
for(i = 0; i < G->v_number; i++)
{
for(j = 0; j < G->v_number; j++)
{
printf("%4d ", G->e_buf[i][j]);
}
printf("\n");
}
return 0;
}
///
#include "g.h"
int main()
{
sqg_pnode G = create_space();
create_sqg(G);
show_sqg(G);
}