问题描述

使用邻接矩阵存储下图所示无向图

**

**

解题思路

创建一个邻接矩阵

程序实现

#include

#include

#define MAXVEX 10

/* Status是函数的类型,其值是函数结果状态代码,如OK等 */

typedef int Status;

/* 顶点类型应由用户定义 */

typedef char VertexType;

/* 边上的权值类型应由用户定义 */

typedef int EdgeType;

typedef struct {

VertexType vex[MAXVEX];

EdgeType arc[MAXVEX][MAXVEX];

int numNodes, numEdges;

} MyGraph, *GraphPlus;

void CreateMyGraph(GraphPlus *plus);

int main(void) {

int i, j;

GraphPlus plus;

CreateMyGraph(&plus);

for (i = 0; i < plus->numNodes; i++) {

for (j = 0; j < plus->numNodes; j++) {

printf("%d\t", plus->arc[i][j]);

}

printf("\n");

}

}

void CreateMyGraph(GraphPlus *plus) {

int i, j, k, w;

printf("请输入顶点数和边数:\n");

scanf("%d,%d", &i, &j);

*plus = (GraphPlus)malloc(sizeof(MyGraph));

getchar();

(*plus)->numNodes = i;

(*plus)->numEdges = j;

// 读入顶点数

for (i = 0; i < (*plus)->numNodes; i++) {

scanf("%c", &(*plus)->vex[i]);

}

// 初始化边数组

for (i = 0; i < (*plus)->numNodes; i++) {

for (j = 0; j < (*plus)->numNodes; j++) {

(*plus)->arc[i][j]=0;

}

}

// 读入numEdges条边,建立邻接矩阵

for(k = 0; k < (*plus)->numEdges; k++) {

printf("输入边(vi,vj)上的下标i,下标j:\n");

scanf("%d,%d", &i, &j);

(*plus)->arc[i][j] = 1;

// 因为是无向图,矩阵对称

(*plus)->arc[j][i] = (*plus)->arc[i][j];

}

}

运行结果

无向图邻接矩阵的存储C语言,使用邻接矩阵存储无向图相关推荐

  1. c语言 文档存储,C语言数据的存储

    C语言数据的存储Tag内容描述: 1.第二章 数据的存储与运算,预备知识 基本数据类型 常量与变量 不同类型数据间的转换 运算符和表达式,2.0 预备知识 计算机中数的表示及进制转换 数码.基与权 数 ...

  2. 假设以邻接矩阵作为图的存储结构_图的存储

    因为图的结构特点,使得其在存储.遍历也相对复杂一些. 邻接矩阵存储图 最简单的方式就是将图的顶点用一维数组存储进来,然后将边信息存储在二维矩阵中,这两个数组合称为图的邻接矩阵(Adjacency Ma ...

  3. c语言静态存储和动态存储,C语言中的静态内存与动态内存

    我们知道,内存分为动态内存和静态内存,我们先讲静态内存. 一.静态内存 内存管理---存储模型 存储模型决定了一个变量的内存分配方式和访问特性,在C语言中主要有三个维度来决定:1.存储时期 2.作用域 ...

  4. 存储过程debug值not a variable_C语言变量的存储类别

    在程序中经常会使用到变量,在C程序中可以选择变量的不同存储形式,其存储类别分为静态存储和动态存储.可以通过存储类别修饰符来告诉编译器要处理什么样的类型变量,具体主要有自动(auto).静态(stati ...

  5. 单片机c语言存数据,单片机中C语言的数据存储与程序编写

    一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...

  6. C语言再学习 -- 存储类型关键字

    定义: 是对声明的实现或者实例化.连接器(linker)需要它(定义)来引用内存实体.与上面的声明相应的定义如下:参看:C语言再学习 -- 存储类.链接 C语言中有 5 个作为存储类说明符的关键字,分 ...

  7. C语言再学习 -- 存储类、链接

    这一章是我看的时间最长的一章了,表面上是有很多关键字和几个函数需要学习,其实我知道是自己最近不在状态了,做项目没进展,看书看不下去,两头都放不下,最后两头都没有做好.不由的想起一句话,你不快乐是因为: ...

  8. C语言 | 变量的存储方式

    C语言动态存储方式与静态存储方式 静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式:动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式. 内存中的供用户使用的存储空间可以分为 ...

  9. c语言 存储,c语言存储类

    C为变量提供了5种不同的存储类,还有基于指针的第6种存储类. 不同的存储类提供了变量的作用域.链接和存储时期的不同组合. 作用域:描述了程序中可以访问的一个标识符的一个或多个区域. 一个C变量的作用域 ...

最新文章

  1. vue实现动态css,Vue中如何动态绑定CSS
  2. 台式计算机防盗锁怎么安装,怎样拆装防盗门锁?防盗门锁怎么进行正确安装?...
  3. leetcode刷题 60 61
  4. c#基础知识梳理(四)
  5. 标准开源产品是打破供应商垄断的关键
  6. java架构师进阶独孤九剑系列(一):数据结构与算法
  7. webpack -- 无法将“webpack”项识别为 cmdlet 。。。
  8. “3D几何与视觉技术”全球在线研讨会第五期~隐式3D形状表示学习
  9. 诗与远方:无题(三十)- 凄凉缘空
  10. 巧用BroadcastReceiver实现开机“自”启动
  11. 当文科生遇见R语言,照样玩得转
  12. Qt + 运动控制 (固高运动控制卡)【1】环境准备,框架搭建
  13. 机顶盒App安装在sd卡的目录
  14. Linux定时任务配置
  15. npm install报gyp info it worked if it ends with ok
  16. 2008¸ß¿¼×÷ÎĸãЦ¼¯
  17. Java 实例 - 字符串分割和字符串分隔
  18. 【聚类算法】什么是聚类
  19. 在Final Cut Pro X 中如何把音频和视频对齐?
  20. 全景(360 度相机)图像数据集 3D60 Dataset 下载步骤 (详细)

热门文章

  1. VB常见错误和难点分析
  2. linux arm 地址映射 ioremap_nocache 使用,ioremap_nocache 函数分析
  3. 基础科研探索推进中的十大关系
  4. 安卓-Viewpage详解(1)——广告条
  5. 【干货#011】小程序页面滚动实现广告条隐藏
  6. php中如何强制转为长整型,PHP长整型在32位系统中强制转化溢出
  7. python 主线程 等待 子线程 知乎_[Python] 知乎多线程爬虫
  8. 基于Arduino的火灾报警器(有论文 毕设 课设 研究性学习)
  9. python字符串处理方法与函数有什么区别_傻傻分不清系列 | Python中各种字符串处理方法...
  10. calendar java_java中Calendar类的使用讲解