图的建立-邻接矩阵表示(C语言)

代码如下:

/* 图的邻接矩阵表示法 */#define MaxVertexNum 100    /* 最大顶点数设为100 */
#define INFINITY 65535        /* ∞设为双字节无符号整数的最大值65535*/
typedef int Vertex;         /* 用顶点下标表示顶点,为整型 */
typedef int WeightType;        /* 边的权值设为整型 */
typedef char DataType;        /* 顶点存储的数据类型设为字符型 *//* 边的定义 */
typedef struct ENode *PtrToENode;
struct ENode{Vertex V1, V2;      /* 有向边<V1, V2> */WeightType Weight;  /* 权重 */
};
typedef PtrToENode Edge;/* 图结点的定义 */
typedef struct GNode *PtrToGNode;
struct GNode{int Nv;  /* 顶点数 */int Ne;  /* 边数   */WeightType G[MaxVertexNum][MaxVertexNum]; /* 邻接矩阵 */DataType Data[MaxVertexNum];      /* 存顶点的数据 *//* 注意:很多情况下,顶点无数据,此时Data[]可以不用出现 */
};
typedef PtrToGNode MGraph; /* 以邻接矩阵存储的图类型 */MGraph CreateGraph( int VertexNum )
{ /* 初始化一个有VertexNum个顶点但没有边的图 */Vertex V, W;MGraph Graph;Graph = (MGraph)malloc(sizeof(struct GNode)); /* 建立图 */Graph->Nv = VertexNum;Graph->Ne = 0;/* 初始化邻接矩阵 *//* 注意:这里默认顶点编号从0开始,到(Graph->Nv - 1) */for (V=0; V<Graph->Nv; V++)for (W=0; W<Graph->Nv; W++)  Graph->G[V][W] = INFINITY;return Graph; 
}void InsertEdge( MGraph Graph, Edge E )
{/* 插入边 <V1, V2> */Graph->G[E->V1][E->V2] = E->Weight;    /* 若是无向图,还要插入边<V2, V1> */Graph->G[E->V2][E->V1] = E->Weight;
}MGraph BuildGraph()
{MGraph Graph;Edge E;Vertex V;int Nv, i;scanf("%d", &Nv);   /* 读入顶点个数 */Graph = CreateGraph(Nv); /* 初始化有Nv个顶点但没有边的图 */ scanf("%d", &(Graph->Ne));   /* 读入边数 */if ( Graph->Ne != 0 ) { /* 如果有边 */ E = (Edge)malloc(sizeof(struct ENode)); /* 建立边结点 */ /* 读入边,格式为"起点 终点 权重",插入邻接矩阵 */for (i=0; i<Graph->Ne; i++) {scanf("%d %d %d", &E->V1, &E->V2, &E->Weight); /* 注意:如果权重不是整型,Weight的读入格式要改 */InsertEdge( Graph, E );}} /* 如果顶点有数据的话,读入数据 */for (V=0; V<Graph->Nv; V++) scanf(" %c", &(Graph->Data[V]));return Graph;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 Xunit 中使用依赖注入

在 Xunit 中使用依赖注入Intro之前写过一篇 xunit 的依赖注入相关的文章&#xff0c;但是实际使用起来不是那么方便今天介绍一个基于xunit和微软依赖注入框架的“真正”的依赖注入使用方式 ——— Xunit.DependencyInjection, 来自大师的作品&#xff0c;让你在测试代码里使用依…

图的建立-邻接表表示(C语言)

代码如下: /* 图的邻接表表示法 */#define MaxVertexNum 100 /* 最大顶点数设为100 */ typedef int Vertex; /* 用顶点下标表示顶点,为整型 */ typedef int WeightType; /* 边的权值设为整型 */ typedef char DataType; /* 顶点存储的数据类型设为字…

对一组同构对象用单数组表示法实现(算法导论第十章10.3-2)

对一组同构对象用单数组表示法实现 &#xff08;算法导论第十章10.3-2&#xff09; 考虑到数据安全问题&#xff0c;多用了一个数组来处理安全问题。 #ifndef C11LEARN_SINGULARGROUPSREPRESENTISOMORPHICOBJECTS_H #define C11LEARN_SINGULARGROUPSREPRESENTISOMORPHICOBJEC…

Java实现BST搜索树

代码如下: package BSTree;import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class BSTree {private class TreeNode{int data;TreeNode left;TreeNode right;public TreeNode(int e){data e;left null;…

给定一个n节点的二叉树,写出一个O(n)时间递归过程,将该树每个节点关键字输出(算法导论第十章10.4-2)

给定一个n节点的二叉树&#xff0c;写出一个O(n)时间递归过程&#xff0c;将该树每个节点关键字输出 &#xff08;算法导论第十章10.4-2&#xff09; #include <iostream> template<typename T> void TraverseBinaryTreeIndex(const BinaryTreeNodeIndex<T>…

C#由转换二进制所引起的思考,了解下?

【导读】最近遇到很有意思转换二进制的问题&#xff0c;有部分童鞋俨然已了解&#xff0c;可能也有一部分童鞋没碰到过也就不知情&#xff0c;这里我们来深入学习下转换二进制所带来的问题。在写此篇文章时&#xff0c;非常开心&#xff0c;收到再一次连任MVP的邮件&#xff0c…

给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构(算法导论第十章10.4-3)

给定一个n节点的二叉树&#xff0c;写出一个O(n)时间非递归过程&#xff0c;将该树每个节点关键字输出&#xff0c;可以使用一个栈作为辅助数据结构 &#xff08;算法导论第十章10.4-3&#xff09; template<typename T> void TraverseBinaryTreeIndexByStack(const Bi…

Java实现堆(最大堆,最小堆)

最大堆代码如下: package MaxHeap;import java.util.Scanner;public class Heap {private int data[];private int size;private int capacity;private final int maxNum 999999999;public Heap(){data new int[101];size 0;capacity 10;data[0] maxNum;}public Heap(int …

.Net Core In Docker 在容器内编译并发布

Docker可以说是现在微服务&#xff0c;DevOps的基础&#xff0c;咱们.Net Core自然也得上Docker。.Net Core发布到Docker容器的教程网上也有不少&#xff0c;但是今天还是想来写一写。你搜.Net core程序发布到Docker网上一般常见的有两种方案&#xff1a;1、在本地编译成Dll文件…

带你深入探究云原生时代的分布式操作系统 Kubernetes

过去几年&#xff0c;以 docker、kubernetes 为代表的容器技术已发展为一项通用技术&#xff0c;BAT、滴滴、京东、头条等大厂&#xff0c;都争相把容器和 k8s 项目作为技术重心&#xff0c;试图“放长线钓大鱼”。就说腾讯吧&#xff0c;目前基本所有业务都跑在云上&#xff0…

Java实现AVL平衡树

代码如下: package AVLTree;import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class AVLTree {private class TreeNode{private int data;TreeNode left;TreeNode right;private int height;public TreeNo…

辅助类BinaryTreeNodeIndex(用index索引代替指针)

辅助类BinaryTreeNodeIndex (用index索引代替指针&#xff09; template<typename T> class BinaryTreeNodeIndex { public:T key;int left;int right;int parent; public:BinaryTreeNodeIndex(){}BinaryTreeNodeIndex(const T key,int parent -1,int left -1,int ri…

C# 9.0 新特性之 Lambda 弃元参数

阅读本文大概需要不到 1 分钟。弃元&#xff08;Discards&#xff09; 是在 C# 7.0 的时候开始支持的&#xff0c;它是一种人为丢弃不使用的临时虚拟变量。语法上它是用来赋值的&#xff0c;但它却不被分配存储空间&#xff0c;即没有值&#xff0c;所以不能从中读取值。弃元用…

辅助类BinaryTreeNode(二叉树节点)

辅助类BinaryTreeNode (二叉树节点) template<typename T> class BinaryTreeNode { public:T key;BinaryTreeNode<T>* parent;BinaryTreeNode<T>* left;BinaryTreeNode<T>* right; public:BinaryTreeNode(){}BinaryTreeNode(T key,BinaryTreeNode<…

Java实现Huffman哈夫曼树

代码如下: package HuffmanTree;import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class HuffmanTree {private class TreeNode{private int val;private TreeNode left;private TreeNode right;public Tr…

应用交付老兵眼中的Envoy, 云原生时代下的思考

Envoy 是云原生时代的明星&#xff0c;其本质是反向代理负载均衡类软件&#xff0c;领域上归于应用交付&#xff0c;那么作为应用交付领域的老兵如何看待 Envoy&#xff0c;Envoy 又引发了哪些关于传统应用交付领域的思考&#xff1f;关于作者林静&#xff0c;F5 软件方向解决方…

给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)

给定一个n节点二叉树&#xff0c;写出一个O(n)时间的非递归的过程&#xff0c;将该树每个结点的关键字输出。要求除该树本树的存储空间外只能使用固定量的额外存储空间&#xff0c;且过程中不得修改该树&#xff0c;即使是暂时的修改也不允许。 &#xff08;算法导论第三版第十…

Java实现Huffman哈夫曼树(数组实现)

代码如下: package HuffmanTreeArrays;import java.util.ArrayList; import java.util.Scanner;public class HuffmanTree {private class TreeNode{private int val;private int left;private int right;private int parent;public TreeNode(){val 0;left -1;right -1;par…

asp.net core程序在k8s中基于rabbitmq队列消息数的HPA实践!

背景最近一段时间&#xff0c;陆陆续续的把手里头项目都迁移到了k8s中&#xff0c;期间遇到很多的坑&#xff0c;并且也学到了许多k8s的知识&#xff08;从0-1&#xff09;&#xff0c;大家都知道k8s中的一大特性是自动扩容&#xff0c;对此结合自己的业务发现很是有“用武之地…

非递归遍历二叉树(算法导论第三版第十章10.4-5)

非递归遍历二叉树&#xff08;算法导论第三版第十章10.4-5&#xff09; template<typename T> void TraverseBinaryTreeNonRecursive(BinaryTreeNode<T>* root) {BinaryTreeNode<T>* prev nullptr;BinaryTreeNode<T>* current root;while (current!…