假设我有一个C库,用于从house中构建一个brick。与每个brick相关联的是一组doubleint,它们分别对应于其尺寸,重量,颜色以及其发运的货物等。然后house只是某种形式的砖的有组织集合。我的房屋建筑库中的某些函数会接收house,但是大多数函数会在bricks上接收和操作; house大多是使用本地brick明智的操作构建的,该操作对应于本地更改(例如添加/移除积木)。

我(经验丰富,经验不足)认为,有两种“自然”方式可以用数据结构来表示这种house -made-of-brick设置。

方法1:大块透明砖,小房子。让每个brick结构包含与之关联的每个关联doubleint的字段,以及指向与之紧邻的砖头的指针。在此设置中,与brick相比,每个house都是一个大结构(可以想象house只能是指向任何brick的指针),并且整个过程只是一个庞大的指针网络。

方法2:小不透明砖头,大房子。让每个brick由一个整数index和一个仅指向其拥有的house的指针组成;然后,house包含doubleint的数组,brick可以切成这些数组以获取其数据,以及一些用于所有连接性信息的额外数组/表。通过这种方法,使用大的house结构来保存和管理资源,无论我们在代码中的何处,每个brick都可以看到该结构。

问题:在什么情况下(如果有)方法1比方法2更可取?

我对方法2非常有偏好,但是很难准确地说明它在客观上比方法1更好的含义。在此先感谢您对适当阅读 Material 的任何建议和/或指导。也非常欢迎提出有关如何更好地表达我的问题的建议:)

最佳答案

正如其他人指出的那样,您正在描述图形问题,并询问表示该图形的方法。但是,您的问题未指定您要实现的应用程序。这是我想到的几种情况:

1)应用程序对房屋的关注要比对每个砖块更为关注:例如,您要计算房屋上的某些指标,大多数砖块来自哪里,房屋的最终尺寸是多少,然后是第二种方法将更能代表您要解决的问题。因此,易于实施和维护。

2)将砖块视为独立实体并将其表示为至关重要。该应用程序更关注删除,移动或更一般地在砖块级别而不是房屋级别上进行操作。那么第一种方法会更合适。

关于c - 数据结构(C):大砖瓦房还是小砖瓦房?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59447612/

10-10 02:15