月球美容计划之图的储存结构汇总

2024-08-22 14:18

本文主要是介绍月球美容计划之图的储存结构汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SJ图论很流弊,为了省赛队里知识尽量广,我就直接把图continue,现在回顾起来丫的全忘了,从头开始吧。

先写写图的存储,再写写最小生成树和最短路的几个经典算法,月球美容计划就可以结束了。0 0,拖了好久,还有很多内容要写。- -

这次总结了邻接矩阵,邻接表,十字链表,邻接多重表,边集数组,这5种常用的图的储存结构,也许能当模板用吧。

 

 

邻接矩阵

#include <stdio.h>
#include <stdlib.h>
#include <string.h>//邻接矩阵
int G[100][100];
int add1 (int i,int j,int w)
{G[i][j] = w;return 0;
}int main()
{int i,n;//建图scanf ("%d",&n);for (i = 0;i < n;i++){int a,b,w;//输入起点、终点、权重scanf ("%d%d%d",&a,&b,&w);add1 (a,b,w);//无向图加上add1 (b,a,w);}return 0;
}


邻接表

#include <stdio.h>
#include <stdlib.h>
#include <string.h>//邻接表struct dot
{int d;int w;struct dot *next;
};struct hed
{int v;struct dot *next;
}head[100];int add2(int i,int j,int w)
{struct dot * p;struct dot * t = new dot;t->d = j;t->w = w;t->next = NULL;if (head[i].next == NULL){head[i].next = t;return 0;}p = head[i].next;while (p->next != NULL)p = p->next;p->next = t;return 0;
}int main()
{int i,n;memset (head,0,sizeof (head));//建图scanf ("%d",&n);for (i = 0;i < n;i++){int a,b,w;//输入起点、终点、权重scanf ("%d%d%d",&a,&b,&w);add2 (a,b,w);//无向图加上add2 (b,a,w);}return 0;
}


十字链表(有向图好用)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>//十字链表struct dot
{int d;int w;struct dot *next;
};struct hed
{int v;struct dot *to;struct dot *next;
}head[100];int add3(int i,int j,int w)
{struct dot * p;struct dot * t = new dot;t->d = j;t->w = w;t->next = NULL;//正邻接表构建if (head[i].next == NULL){head[i].next = t;}else{p = head[i].next;while (p->next != NULL)p = p->next;p->next = t;}//逆邻接表打十字if (head[i].to == NULL){head[i].to = t;return 0;}else{p = head[i].to;while (p->next != NULL)p = p->next;p->next = t;}return 0;
}int main()
{int i,n;memset (head,0,sizeof (head));//建图scanf ("%d",&n);for (i = 0;i < n;i++){int a,b,w;//输入起点、终点、权重scanf ("%d%d%d",&a,&b,&w);add3 (a,b,w);}return 0;
}


邻接多重表(无向图)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>//邻接多重表(无向图)struct dot
{int i,j;int w;struct dot *inext;struct dot *jnext;
};struct hed
{int v;struct dot *next;
}head[100];int add4(int i,int j,int w)
{struct dot *t = new dot;struct dot *p = NULL,*tp = NULL;t->i = i;t->j = j;t->w = w;t->inext = NULL;t->jnext = NULL;if (head[i].next == NULL){head[i].next = t;}else{p = head[i].next;while (p != NULL){tp = p;if (p->i == i)p = p->inext;elsep = p->jnext;}if (tp->i == i)tp->inext = t;elsetp->jnext = t;}if (head[j].next == NULL){head[j].next = t;}else{p = head[j].next;while (p != NULL){tp = p;if (p->i == j)p = p->inext;elsep = p->jnext;}if (tp->i == j)tp->inext = t;elsetp->jnext = t;}return 0;
}int main()
{int i,n;memset (head,0,sizeof (head));//建图scanf ("%d",&n);for (i = 0;i < n;i++){int a,b,w;//输入起点、终点、权重scanf ("%d%d%d",&a,&b,&w);add4 (a,b,w);}return 0;
}

 

边集数组

#include <stdio.h>
#include <stdlib.h>
#include <string.h>//边集数组struct e
{int i,j;int w;}eg[100];int cont;int add5(int i,int j,int w)
{eg[cont].i = i;eg[cont].j = j;eg[cont].w = w;return 0;
}int main()
{int i,n;memset (eg,0,sizeof (eg));cont = 0;//建图scanf ("%d",&n);for (i = 0;i < n;i++){int a,b,w;//输入起点、终点、权重scanf ("%d%d%d",&a,&b,&w);//有向图无向图皆可add5 (a,b,w);}return 0;
}


边集数组之前向星

#include <stdio.h>
#include <stdlib.h>
#include <string.h>//前向星
int head[100];struct e
{int to;int fro;int w;
}eg[100];int cont;
int add6 (int i,int j,int w)
{eg[cont].to = j;eg[cont].fro = head[i];eg[cont].w = w;head[i] = cont++;return 0;
}int main()
{int i,n;memset (head,-1,sizeof (head));cont = 0;//建图scanf ("%d",&n);for (i = 0;i < n;i++){int a,b,w;//输入起点、终点、权重scanf ("%d%d%d",&a,&b,&w);add6 (a,b,w);//无向图加上add6 (b,a,w);}return 0;
}


这篇关于月球美容计划之图的储存结构汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096513

相关文章

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2