邻接矩阵的动态数组表示法

news/2024/7/15 17:28:18 标签: 数据结构, c语言, 图论

邻接矩阵的动态数组表示法

  • 前言
  • 思路
  • 实现

前言

图的构造方法通常有两种,一种是用邻接矩阵,一种是用邻接表。邻接矩阵不涉及链表的操作,所以使用起来会比较方便,但是对于较为稀疏的图而言,邻接矩阵会浪费很多空间。而对于静态数组构建的邻接矩阵而言,这更加是一种空间的浪费。

本文给出动态数组的邻接矩阵构造方法。

思路

对于图中一个顶点的存储数据,用一维动态数组。对于边的权值矩阵,用二维动态数组

实现

c语言代码实现

#include<stdio.h>
#include<stdlib.h>

#define INFINITY 1000000;

typedef int WeightType;
typedef int DataType;

typedef struct GNode *PtrToGNode;
typedef PtrToGNode MGraph;
struct GNode
{
    int Nv;
    int Ne;
    WeightType **G;
    DataType *Data
};

MGraph CreateGraph(int Nv)
{
    int i,j;
    MGraph M = (MGraph)malloc(sizeof(struct GNode));
    M->Nv = Nv;
    M->Ne = 0;

    M->G = (WeightType**)malloc(Nv*sizeof(WeightType*));        //row
    for(i=0; i<Nv; i++)
        M->G[i] = (WeightType *)malloc(Nv*sizeof(WeightType));  //column

    M->Data = (DataType *)malloc(Nv*sizeof(DataType));

    for(i=0; i<M->Nv; i++)
    {
        for(j=0; j<M->Nv; j++)
            M->G[i][j] = INFINITY;
    }

    return M;
}

最后,创作不易,希望大家能顺手点个赞。如果觉得有帮助,可以加个收藏,给作者更大的创作动力


http://www.niftyadmin.cn/n/1399052.html

相关文章

计算机组成原理知识总结——系统总线篇

系统总线1.总线的基本概念2.总线的分类3.总线特性及性能指标3.1 总线特性3.2 总线性能指标3.3 总线标准4.总线结构5.总线控制5.1 判优控制5.2 通信控制1.总线的基本概念 总线的定义&#xff1a;总线是连接多个设备的信息传输线&#xff0c;是各个部件共享的传输介质。 总线连接…

Ubuntu 编译 OpenCV SDK for Android + Linux

概述 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;它提供了很多函数&#xff0c;这些函数非常高效地实现了计算机视觉算法&#xff08;最基本的滤波到高级的物体检测皆有涵盖&#xff09;。   OpenCV 的应用领域…

计算机组成原理知识总结——存储器篇

存储器1.概述1.1 存储器的分类1.2 存储器的层次结构2.主存储器2.1 概述2.2 半导体存储芯片简介2.3 随机存取存储器&#xff08;RAM&#xff09;2.4 只读存储器ROM2.5 存储器和CPU的连接2.5.1 存储容量的扩展2.5.2 存储器与CPU的连接2.6 存储器的校验2.7 提高访存速度的措施3.高…

数据结构PTA 案例6-1.3 哥尼斯堡的“七桥问题”

案例6-1.3 哥尼斯堡的“七桥问题” 题目解法题目 哥尼斯堡是位于普累格河上的一座城市&#xff0c;它包含两个岛屿及连接它们的七座桥&#xff0c;如下图所示。 可否走过这样的七座桥&#xff0c;而且每桥只走过一次&#xff1f;瑞士数学家欧拉(Leonhard Euler&#xff0c;17…

数据结构PTA 案例6-1.4 地下迷宫探索

案例6-1.4 地下迷宫探索 题目解法题目 假设有一个地下通道迷宫&#xff0c;它的通道都是直的&#xff0c;而通道所有交叉点&#xff08;包括通道的端点&#xff09;上都有一盏灯和一个开关。请问你如何从某个起点开始在迷宫中点亮所有的灯并回到起点&#xff1f; 输入格式: 输…

数据结构PTA 案例6-1.5 旅游规划

案例6-1.5 旅游规划题目解法题目 有了一张自驾旅游路线图&#xff0c;你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序&#xff0c;帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的&#xff0c;那么需要输…

数据结构PTA 案例6-1.6 哈利·波特的考试

案例6-1.6 哈利波特的考试题目解法题目 哈利波特要考试了&#xff0c;他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha&#xff0c;将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念&#xf…

数据结构PTA 案例6-1.7 公路村村通

案例6-1.7 公路村村通题目解法题目 现有村落间道路的统计数据表中&#xff0c;列出了有可能建设成标准公路的若干条道路的成本&#xff0c;求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N&#xff08;≤1000&#xff09;和候选道路数目M…