【数据结构】邻接矩阵及其实现
文件操作比直接输入方便很多
直接输入:
//建立图的邻接矩阵储存结构
#include <stdio.h>
#include <string.h>
#define M 20
#define FINITY 5000
typedef struct
{char vexs[M];int edge[M][M];int n,e;
}Mgraph;//c=0,表示建立无向图
void creat(Mgraph *g,int c)
{int i,j,k,w;printf("请输入顶点数和边数:"); scanf("%d%d",&g->n,&g->e);getchar(); printf("请依次输入各个顶点的信息:");for(i=0;i<g->n;i++)scanf("%c",&g->vexs[i]);getchar();for(i=0;i<g->n;i++){for(j=0;j<g->n;j++){if(i==j) g->edge[i][j]=0;else g->edge[i][j]=FINITY; }}printf("请输入两个顶点的编号以及权值:\n");for(k=0;k<g->e;k++){scanf("%d%d%d",&i,&j,&w);g->edge[i][j]=w;if(c==0) g->edge[j][i]=w; }
}void print(Mgraph *g)
{int i,j;printf("一共有%d个边,%d个点。\n",g->e,g->n);printf("各个元素信息:\n");for(i=0;i<g->n;i++){printf("%c ",g->vexs[i]);} printf("\n");printf("对应的邻接矩阵:\n");for(i=0;i<g->n;i++){for(j=0;j<g->n;j++){printf("%-5d",g->edge[i][j]);}printf("\n");}
}int main ()
{Mgraph g;printf("输入:\n"); creat(&g,0);printf("\n");printf("输出:\n"); print(&g);return 0;
}
文件读取:
//建立图的邻接矩阵储存结构
#include <stdio.h>
#include <string.h>
#define M 20
#define FINITY 5000
typedef struct
{char vexs[M];int edge[M][M];int n,e;
}Mgraph;//c=0,表示建立无向图
void creat(Mgraph *g,int c)
{int i,j,k,w;FILE *f;f=fopen("test.txt","r");if(f){fscanf(f,"%d%d",&g->n,&g->e);for(i=0;i<g->n;i++)fscanf(f,"%s",&g->vexs[i]);for(i=0;i<g->n;i++){for(j=0;j<g->n;j++){if(i==j) g->edge[i][j]=0;else g->edge[i][j]=FINITY; }}for(k=0;k<g->e;k++){fscanf(f,"%d%d%d",&i,&j,&w);g->edge[i][j]=w;if(c==0) g->edge[j][i]=w; }fclose(f);}else{g->n=0;}
}void print(Mgraph *g)
{int i,j;printf("一共有%d个边,%d个点。\n",g->e,g->n);printf("各个元素信息:\n");for(i=0;i<g->n;i++){printf("%c ",g->vexs[i]);} printf("\n");printf("对应的邻接矩阵:\n");for(i=0;i<g->n;i++){for(j=0;j<g->n;j++){printf("%-5d",g->edge[i][j]);}printf("\n");}
}int main ()
{Mgraph g;creat(&g,0);printf("输出:\n"); print(&g);return 0;
}
用 法:int fscanf(FILE *stream, char *format,[argument...]);
int fscanf(文件指针,格式字符串,输入列表);
【数据结构】邻接矩阵及其实现相关推荐
- 数据结构---邻接矩阵的BFS
数据结构-邻接矩阵的BFS 原理:参考趣学数据结构 代码: 队列代码: #pragma once #define elemType int #define N 100 #include<stdl ...
- 数据结构---邻接矩阵的DFS
数据结构-邻接矩阵的DFS 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define N 100 #define ...
- Java数据结构——邻接矩阵+邻接表
文章目录 一.邻接矩阵 二.邻接表 一.邻接矩阵 1. 定义 vexs[](存储顶点)和 arcs[][](存储边关系,叫邻接矩阵)集合.因此,用一个一维数组存放图中所有顶点数据: 用一个二维数组存放 ...
- 数据结构——邻接矩阵表示图(c语言)
邻接矩阵(Adjacency Matrix)是表示顶点之间相邻关系的矩阵.设G=(V,E)是一个图,其中V={v1,v2,-,vn} [1] .G的邻接矩阵是一个具有下列性质的n阶方阵: ①对无向图而 ...
- 数据结构—邻接矩阵存储法代码实现
邻接矩阵法 图的邻接矩阵(adjacency matrix)是一种采用邻接矩阵数组表示顶点之间相邻关系的存储结构.设G=(V,E)是含有n(n>0)个顶点的图,各顶点的编号为0~(n-1),则G ...
- [数据结构]邻接矩阵和邻接表存储的图DFS,BFS算法时间复杂度分析
- 数据结构——图的定义和实现
这里写目录标题 图的定义 各种图的定义 无向边 有向边 图的顶点与边的关系 连通图生成树 图的各种实现 在引入邻接矩阵之前先介绍一下图的相关概念(概念比前树啥的面稍微复杂一点) 图的定义 之前学了线性 ...
- 广州大学数据结构课程设计
程序设计题目 交通查询系统设计(难度系数 1.5) [问题描述] 今天铁路交通网络非常发达,人们在出差.旅游时,不仅关注交通费用,还关注里程和时间.请按照下图设计一个交通查询系统,能够满足旅客查询从任 ...
- 南京邮电大学数据结构实验三(图的基本运算及飞机换乘次数最少问题)
文章目录 实验一.图的基本运算 1.邻接矩阵表示 (1)验证基本运算 (2)图的深度和宽度优先遍历(邻接矩阵) 2.邻接表表示 (1)验证基本运算 (2)图的深度和宽度优先遍历(邻接表) 实验二.飞机 ...
- Input dataset is not organized (height = 1) Input dataset is not organized (height = 1)......
转自:https://www.cnblogs.com/william-chan/p/6404717.html 转自:https://blog.csdn.net/baoxiao7872/article/ ...
最新文章
- Coursera课程Python for everyone:Quiz: Object Oriented Programming
- ABAP小写金额转大写
- 【数据迁移】使用传输表空间迁移数据
- 表单一次性上传多个文件
- 带你剖析鸿蒙轻内核任务栈的源代码
- iphone已停用怎么解锁_iPhone多次输错密码已停用,连接iTunes,怎么办?
- Bailian3179 最长单词【字符串】
- iOS开发UI篇—控制器的创建
- C# 基于MySQL的数据层基类(MySQLHelper)
- 如何通过nrpe设置Windows 内存检测
- matplotlib易混概念理解与画图详解
- 安装运行okvis odometry
- 自适应求积算法 MatLab版
- Hibernate HHH000179警告和narrow proxy
- Mac Quicktime 录屏带声音
- 《此生未完成》:她说,名利权情,没有一样是不辛苦的
- 2048版俄罗斯方块java_Java版俄罗斯方块
- js正则之前瞻后顾与非捕获分组
- python如何学 Python主要能做什么
- mysql 备份 ftp_如何将数据库备份文件备份到FTP上?