[图]邻接矩阵存储并输出
2016-01-13 01:21
337 查看
#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXSIZE 20 typedef struct AMGraph //图的邻接矩阵存储结构 { char ver[MAXSIZE]; int adjmar[MAXSIZE][MAXSIZE]; int vernum, edgenum; }AMGraph, *Graph; /*void each_line(void){ //FL给我写的。。。 char ch; while(ch = getchar(), ch != '\n') continue; return; }*/ int Locate(Graph G, char c) { int i = 0; while(c != G -> ver[i] && i < G -> vernum) i ++; if(i >= G -> vernum) return -1; else return i; } void CreatUDG(Graph &G) //建立无向图G { int i, j, x, y; char c, a, b; G = (Graph)malloc(sizeof(AMGraph)); //分配空间 printf("请输入图的顶点数和边数:\n"); scanf("%d%d", &G -> vernum, &G -> edgenum); getchar(); printf("请输入图的顶点:\n"); gets(G -> ver); /*for(i = 0; i < G -> vernum; i ++) { scanf("%c", &G -> ver[i]); }*/ getchar(); /*for(i = 0; i < m; i ++)//初始化邻接矩阵 for(j = 0; j < m; j ++) G -> adjmar[i][j] = 0;*/ memset(G -> adjmar, 0, sizeof(int)); //666 printf("请输入两个顶点之间的边:\n"); for(j = 0; j < G -> edgenum; j ++) { scanf("%c%c", &a, &b); x = Locate(G, a); y = Locate(G, b); G -> adjmar[x][y] = G -> adjmar[y][x] = 1; } //return G; } void Print(Graph G) { int i, j; for(i = 0; i < G -> vernum; i ++) { printf("\n"); for(j = 0; j < G -> vernum; j ++) printf("%5d", G -> adjmar[i][j]); } } int main() { Graph G; CreatUDG(G); Print(G); return 0; }
相关文章推荐
- linux 下安装 Mysql5.7版本
- 实参和形参
- [看书日记20160113]Binder连接池,CrashHandler,multidex
- 十分钟上手Protocol Buffer
- Swift开发IOS-UIPageControl
- maven pom.xml 详解(注释版)
- 总结 №1
- 拦截js方法备忘录
- php验证手机号码
- SED实用21例
- Nginx 配置文件nginx.conf的完整配置说明
- AWK实用20例子
- [系统与指令]轨道轰炸机控制指令
- js中innerText,value,innerHTML的区别
- CMD命令提示符
- 企业级mail服务器 Extmail 搭建
- 《计算机科学导论》安全基础知识
- Spark1.6新特性简介及个人的理解
- 中国的中学竟成了活监狱!
- 点击页面div弹窗以外隐藏的两种思路