假设我有一个C库,用于从house
中构建一个brick
。与每个brick
相关联的是一组double
和int
,它们分别对应于其尺寸,重量,颜色以及其发运的货物等。然后house
只是某种形式的砖的有组织集合。我的房屋建筑库中的某些函数会接收house
,但是大多数函数会在bricks
上接收和操作; house
大多是使用本地brick
明智的操作构建的,该操作对应于本地更改(例如添加/移除积木)。
我(经验丰富,经验不足)认为,有两种“自然”方式可以用数据结构来表示这种house
-made-of-brick
设置。
方法1:大块透明砖,小房子。让每个brick
结构包含与之关联的每个关联double
和int
的字段,以及指向与之紧邻的砖头的指针。在此设置中,与brick
相比,每个house
都是一个大结构(可以想象house
只能是指向任何brick
的指针),并且整个过程只是一个庞大的指针网络。
方法2:小不透明砖头,大房子。让每个brick
由一个整数index
和一个仅指向其拥有的house
的指针组成;然后,house
包含double
和int
的数组,brick
可以切成这些数组以获取其数据,以及一些用于所有连接性信息的额外数组/表。通过这种方法,使用大的house
结构来保存和管理资源,无论我们在代码中的何处,每个brick
都可以看到该结构。
问题:在什么情况下(如果有)方法1比方法2更可取?
我对方法2非常有偏好,但是很难准确地说明它在客观上比方法1更好的含义。在此先感谢您对适当阅读 Material 的任何建议和/或指导。也非常欢迎提出有关如何更好地表达我的问题的建议:)
最佳答案
正如其他人指出的那样,您正在描述图形问题,并询问表示该图形的方法。但是,您的问题未指定您要实现的应用程序。这是我想到的几种情况:
1)应用程序对房屋的关注要比对每个砖块更为关注:例如,您要计算房屋上的某些指标,大多数砖块来自哪里,房屋的最终尺寸是多少,然后是第二种方法将更能代表您要解决的问题。因此,易于实施和维护。
2)将砖块视为独立实体并将其表示为至关重要。该应用程序更关注删除,移动或更一般地在砖块级别而不是房屋级别上进行操作。那么第一种方法会更合适。
关于c - 数据结构(C):大砖瓦房还是小砖瓦房?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59447612/