1

我们在应用程序中使用的数据结构往往包含大量各种类型的信息,而某些信息可能属于多个独立的数据结构。例如,人事数据文件可能包含姓名、地址和有关员工的各种其他信息的记录;并且每条记录可能需要属于一个用于搜索特定员工的数据结构,属于另一个用于回答统计查询的数据结构,等等。

尽管存在这种多样性和复杂性,但一大类计算应用程序涉及对数据对象的一般操作,并且出于有限数量的特定原因需要访问与它们相关联的信息。许多所需的操作是基本计算过程的自然产物,因此在广泛的应用中都需要它们。

以上文本由 Robert Sedwick 在 C++ 中的算法中在抽象数据类型的上下文中进行了描述。

我的问题是作者在上述文本中的第一段是什么意思?

4

3 回答 3

2

数据结构是数据存储和算法的组合,它们在这些数据组织上工作,以提供具有特定约束的某些操作(搜索、索引、排序、更新、添加等)的实现。这些是软件中信息表示的构建块(在黑盒意义上)。在最基本的层面上,这些是队列、堆栈、列表、哈希映射/关联容器、堆、树等。

不同的数据结构有不同的权衡。你必须在正确的情况下使用正确的。这是关键。

有鉴于此,您可以并行使用多个(或“复合”)数据结构,允许以不同方式查询和操作相同的逻辑数据,从而填补彼此的权衡(优势/劣势,例如一个可能是预先排序的,另一个可能是擅长跟踪更改,但删除条目等的成本更高),通常以一些额外开销为代价,因为这些数据结构需要保持彼此同步。

于 2012-08-20T11:48:21.490 回答
1

如果有人知道这一切的结论是什么,那将会有所帮助,但从我收集到的信息来看:

员工记录:

Name Address Phone-Number      Salary Bank-Account      Department Superior

如您所见,员工数据库包含每个员工的信息,这些信息本身被“细分”为或多或少独立的块:员工的联系信息与他工作的部门几乎没有关系,或者他得到的薪水。

编辑:因此,根据需要做什么样的事情,需要查看这个较大记录的不同部分,可能以不同的方式。如果您想知道您总共支付了多少薪水,您需要做的事情与查找员工的电话号码不同。

于 2012-08-20T11:47:26.967 回答
0

一个对象可能是另一个对象/结构的一部分,并且关联不是唯一的;一个对象可能是多个不同结构的一部分,具体取决于上下文。

比如说,有一个公司员工约翰。他的“员工记录”将出现在他的团队成员名单、工资名单、安全许可名单、停车位分配等中。

Not all data contained within his "employee record" will be needed in all of these contexts. His expertise fields are not necessary for parking place allotment, and his marital status should not play a role in meeting room assignment - separate subsystems and larger structures his entry is a part of don't require all of the data contained within his entry, just specific parts of it.

于 2012-08-20T11:53:01.340 回答