小编Dak*_*est的帖子

如何从二维数组构建图形?

我正在尝试学习图结构和算法。从概念上讲,我理解 DFS、BFS,并且我可以通过提供图形来实现它们,但是传统上图形是如何组成的?

通常,我将它们视为以边为指针的节点列表、带有它们连接的节点的边列表或二维矩阵,其中 arr[node_a][node_b] 的交集是边的权重。

当涉及到从输入中实际构建它时,我不知道从哪里开始。

例如,当提供像(在线吃豆子问题)这样的 2d 网格时,您将如何构建图形,其中 P 是源节点,- 是树中的节点。

%%%%%%%%%%%%%%%%%%%%
%--------------%---%
%-%%-%%-%%-%%-%%-%-%
%--------P-------%-%
%%%%%%%%%%%%%%%%%%-%
%.-----------------%
%%%%%%%%%%%%%%%%%%%%
Run Code Online (Sandbox Code Playgroud)

或者,当提供邻接列表时,您将如何构建它?

我知道这可能是一个大问题,因为这个主题相当复杂。对文档的链接表示赞赏!我一直无法从介绍级别找到任何内容。

arrays algorithm graph

8
推荐指数
1
解决办法
2万
查看次数

如何在Ada中读取大型文件?

我写了一个加密文件的Ada程序.它逐块读取它们以节省目标机器上的内存.不幸的是,Ada的Directories库读取Long_Integer中的文件大小,将读取限制在近2GB的文件中.尝试读取超过2GB的文件时,程序在运行时失败,导致堆栈溢出错误.

它的文档这里是我的上述认识的来源.如何将文件大小读入我自己定义的类型?我可以要求一个像25字节的东西来增加100GB的上限.

ada filesize

4
推荐指数
1
解决办法
355
查看次数

应该何时连接数据报套接字?

我在C中工作,使用POSIX套接字API.

我不确定何时连接数据报套接字是合适的.据我了解,UDP是无连接的,SOCK_DGRAM套接字使用UDP.那么当在数据报套接字上使用connect()和accept()时会发生什么?

在我看来,连接它们并使用send()/ recv()比不连接它们和使用sendto()/ recvfrom()更容易.

连接时套接字的功能是否有区别,或者这仅仅是一种抽象?

c sockets posix

3
推荐指数
1
解决办法
273
查看次数

为什么在C中使用目标文件?

当我编译一个C程序时,为了方便起见,我已经在最后包含了某个头文件的源文件.因此,如果main.c包含util.h,则util.h将包含util.c将使用的所有头文件,概述类型或结构等,然后在最后它包含util.c. 然后,当我编译时,我只需要使用gcc main.c -o main,剩下的就全部用了.

我一直在寻找C编码标准,试图弄清楚最好的做事方式是什么,而且有这么多,以及如此多的相互矛盾的观点,我不知道该怎么想.为什么这么多地方建议单独编译目标文件而不是将它们全部包含在网络中?util从来没有涉及过util.c,所以两者完全独立,理论上(我的理论)它会没问题,但我可能错了,因为这是计算机科学,人们错了,即使他们是对的,所以,如果我已经错了,我可能错了.

有人说头文件应该只是原型,源文件是包含它的源文件,它是必要的系统头文件.从纯粹的美学观点来看,我更喜欢在标题中使用所有信息(类型,系统标题,原型)(在本例中为util.h),并且在util.c中只包含一个函数代码(不包括一个"#include") util.h""在最顶层.

我想我得到的一点是,所有这些东西都有效,选择一种方法听起来对任何不了解背景的人来说都是随意的(我).请告诉我为什么和什么.

c linker include

1
推荐指数
1
解决办法
768
查看次数

标签 统计

c ×2

ada ×1

algorithm ×1

arrays ×1

filesize ×1

graph ×1

include ×1

linker ×1

posix ×1

sockets ×1