c++中的数据结构

Data Structure in C++

本文关键字:数据结构 c++      更新时间:2023-10-16

我正在研究一个问题,并在c++中实现一个算法。该算法需要一个类似于2D数组(例如20x20数组)的数据结构。主要的不同之处在于,每个单元都必须连接周围的8个相邻单元(即上、下、左、右和四个角)。

每个成员的状态会根据邻居的数据变化而变化。所以,每个细胞都是动态生长的。每个单元需要不断检查其所有邻居的数据。

基于这个要求,我想象这个数据结构是圆形的,就像一个环面或一个百吉饼,它没有边缘,所以每个细胞都是相互连接的。

对这个数据结构的表示有什么想法吗?我在考虑使用邻接链表的图,其中每个成员包含周围八个邻居的链表。你觉得呢?我的思路对吗?

寻找一个生命游戏的实现,它用0和1来做这个。除非你要做一些非常复杂的事情,将解决方案收敛到每次迭代的一组约束中,否则你只需要每次循环遍历数组,引用上一个完整的代,并在每次循环结束时更新所有内容以创建新一代。

这主要取决于你的问题,但我对邻接链表有疑问。如果你的邻居是动态增长的,那就更合适了,但在这种情况下,它们似乎是固定的。所以你不妨使用一个指向邻居的数组。

问题陈述似乎不太清楚:

每个成员的状态会根据邻居的数据变化而变化。所以,每个细胞都是动态生长的。每个单元需要不断检查所有相邻单元的数据。

这到底是什么意思?假设只有一个值发生了变化。然后所有的邻居都应该改变,所有的邻居都应该改变,直到所有的值都改变。但是原始值呢,在改变之后,它的邻居也改变了,它是否应该再次改变作为响应(并且无限期地保持变化-听起来像一个坏主意)?

我们有一个简单的例子,一个1x4的二维数组A B C D,其中a是B和D的邻居,B是a和C的邻居,等等。

假设A变了。那么B和D也应该改变,现在C应该改变,它应该根据B和D的变化立即改变吗?还是先B后D ?还是别的什么?

在你的问题中constantlydynamically的含义/定义是什么?是否有时间步骤,例如

 time 1: a cell changes
 time 2: all immediate neighbours change simultaneously
 time 3: neighbours of immediate neighbours change
         (and what about the original cell at this point?)
 time 4: etc.

在大多数情况下我会(大多数人)提出一个基于2维数组结构,但随着setter方法,,在调用时,会自动改变传播。但这取决于你对constantlydynamically的定义