当程序员谈论“数据结构”时,它们指的是什么?


18

当程序员谈论“数据结构”时,他们只是在谈论诸如列表哈希等的抽象数据类型吗?

还是该术语包括任何保存数据的结构,例如复合类型(类对象,结构,枚举等)和原始类型(布尔,整数,字符等)?

我只听说过程序员使用该术语来引用复杂的数据结构或抽象的数据类型,但是提供数据结构列表Wikipedia文章在定义中同时包括了复合类型和原始类型,这并不是我所期望的(甚至虽然确实有道理)。

当环顾四周网上我看到,是指在编程意义上的术语“数据结构”为仅指抽象数据类型的其它地方,比如从计算机科学的州立大学石溪分校的系本次讲座哪些状态

数据结构是特定抽象数据类型的实际实现。

这本有关数据结构的Wikibook,它在诸如此类的句子中使用该术语:

由于数据结构是更高级别的抽象,因此它们向我们提供了对数据组的操作,例如将项目添加到列表中或查找队列中优先级最高的项目

那么,为什么我在使用术语“数据结构”时只听到程序员指的是复杂的数据结构或抽象的数据类型?程序员对术语的定义是否与字典定义不同?


1
该术语随时间演变。CS人群通常使用可容纳多个相关数据项(链接列表,树等)的通用结构类型的术语
2012年

1
这不是术语吗?字符串实际上是一个字符数组,它是一个数据结构,代表一个字符序列
Mithir

3
“数据结构”不是一个自定义术语吗?它是存储数据的任何结构!认真对待这个问题有点困难。
Michael K

1
@Rachel因此,您的问题实际上是原始数据类型是否为数据结构?if programmers mean something different when they talk about data structures仍在民意调查中。
扬尼斯2012年

2
“原始”完全取决于范围。例如,在二进制级别上,没有int之类的东西。在更低的水平上,甚至没有位,只有电偏置。同样,这是一个自我定义的术语-根本不是一个好问题。
Michael K'5

Answers:


20

“数据结构”的通用定义是可以以结构化方式保存数据的任何内容,因此,除了抽象数据类型之外,它还包括复合类型和原始类型。例如,a string是一种数据结构,因为它可以以结构化的方式保存一系列字符。

但是,该术语对程序员也具有另一种含义。

由于术语“数据结构”如此广泛,因此开发人员通常使用更具体的术语来标识他们在说什么,例如classdata objectprimitive type,而用于大多数复杂或抽象数据类型的具体术语是“数据结构”。

这就是为什么您会听到“数据结构”最常用于数组,列表,树和哈希表等抽象数据类型,而不是诸如原始数据类型之类的东西的原因


4
我认为图也很常见,但是它们很少在标准库中表示,因为它们很难以通用有效的方式构建。
克莱姆(Klaim)

因此,当程序员谈论“数据结构”时,他们通常是在谈论抽象数据类型?而且尽管程序员仍然将原始类型(例如int,bool或char)和复合类型(例如类,struct或enum)视为数据结构,但是它们通常用不同的术语来指代吗?
雷切尔

1
@Rachel从技术上讲,数据结构也可以是使用指针/类等的自制实现。作为C ++作业的一部分,我做了一些非常丑陋的“数据结构”,类似于列表。我们只是不经常调用类数据结构,因为它们通常更具体。
本·布罗卡

@BenBrocka Ahhh,因此“数据结构”是一个非常宽泛的术语,它确实涵盖了其他对象,但是通常在谈论数据结构时更明确一些,并使用诸如“原始数据类型”或“数据对象”之类的术语代替“数据结构”。而对于对象常用的特定术语一样ListsTreesGraphs,等恰好是“数据结构”
雷切尔

1
@Rachel是的,即使一切都是数据结构(严格地说),术语“数据结构”通常也指那些抽象的数据类型。从开发人员的角度来看,我会说“数据结构”一词是指他如何存储数据。它可以是内存中的列表,磁盘中的文件,也可以是他自己实现的自定义数据结构。
亚历克斯

5

尽管类似intsbooleans通常被认为是原始数据类型(或原始数据结构),但该术语同时引用了两者。该术语本身仅指以特定方式存储数据的任何内容。当然int像哈希表一样满足这个定义,只是更简单。

通常,当人们使用数据结构时,他们指的是更复杂的数据结构,而不是较简单的数据结构,但是两者都符合定义。


2
我认为我从未听说过有人称其int为“数据结构”。
2012年

2
@Qwertie我都没有,但这仍然是事实。人们更常将其称为“数据类型”,但这与“数据结构”具有相同的含义
Oleksi 2012年

0

我所听说过的最简单,最基本的数据结构定义是将数据存储到内存中,以便可以在时间和内存方面高效地执行诸如插入,更新,删除等基本操作。

因此,数据类型告诉我们我们存储在其中的数据类型。它可以是整数,十进制,字符,字符串或对象。除了抽象数据类型之外,它还可以是复合类型或原始类型。

但是,当我们要将任何复杂的数据存储在内存中时,我们使用数据结构。这就是为什么我们只听到有关数据类型(例如数组,列表,树和哈希表)而不听到原始数据类型之类的原因的原因

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.