“数据结构”和“数据类型”之间有区别吗?

2023-11-23

我就读的大学考试中经常出现的两个问题是:

  • 定义数据类型。分类并解释数据类型
  • 定义数据结构。分类并解释数据结构
  • 无论如何,它们不是同一件事吗?
    考虑一下您正在制作一个Tree<E>在爪哇。你会宣布你的班级Tree<E>,向它添加方法以及你会做的地方Tree<String> myTree = new Tree<>();制作一个树对象。

    您的数据“结构”现在是数据“类型”。
    如果有人问你一个问题,请说:变量 myTree 是什么类型?答案是,Tree<E>。您的数据“结构”现在是数据“类型”。

    现在,由于它们是相同的,因此将根据您想要对它们进行分类的基础以相同的方式对它们进行分类。原始或非原始。同质或异质。线性或分层。

    这是我的理解。难道理解错了?


    我想更正以下内容以开始 - 您创建了一个class称为“树”和一个object称为“myTree”,而不是variable名为“myTree”的datatype“树”。这些是不同的事情。

    以下是数据类型的定义:

    数据类型或简称类型是标识各种数据类型之一的分类, 例如实值、整数或布尔值,确定该类型的可能值; 可以对该类型的值执行的操作;数据的含义; 以及该类型的值的存储方式。

    Now, 根据维基百科,数据类型中的“类型”有多种定义。

    你问的问题是个好问题。当今的现代语言中有一些数据类型,称为抽象数据类型或简称 ADT。 ADT的定义是:

    抽象数据类型(ADT)是具有相似行为的某一类数据结构的数学模型;或者对于具有相似语义的一种或多种编程语言的某些数据类型。抽象数据类型是间接定义的,仅由可以对其执行的操作以及对这些操作的影响(以及可能的成本)的数学约束来定义。

    书中还写道:

    抽象数据类型是纯粹的理论实体,用于(除其他外)简化抽象算法的描述,对数据结构进行分类和评估,以及正式描述编程语言的类型系统。然而,ADT可以通过特定的数据类型或数据结构以多种方式和多种编程语言来实现;或以正式规范语言描述。

    这意味着 ADT 可以使用数据类型或数据结构来实现。

    As for 数据结构:

    数据结构是在计算机中存储和组织数据以便有效使用数据的特殊方式。

    许多教科书交替使用这些词。对于更复杂的类型,这可能会导致混乱。

    举一个小例子:使用 b 树来实现数据库是一种标准。这意味着,我们知道这种类型的 ADT 非常适合此类问题,并且可以更有效地处理它。但为了在 ADT 中注入这种有效性,您需要创建一个数据结构来提供所需的输出。

    另一个例子:有很多树,如b树、二叉搜索树、AA树等。所有这些本质上都是树的类型,但每棵树都有自己的数据结构。

    Refer: 数据结构列表获取大量可用结构。

    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

    “数据结构”和“数据类型”之间有区别吗? 的相关文章

    • 链表、数组和硬件内存缓存

      虽然之前有人问过关于链表与数组的问题 但答案大多归结为我们大多数人在某些时候可能已经学到的东西 列表擅长插入和删除 数组擅长随机访问 现在 像 Bjarne Stroustrup 这样受人尊敬的人已经argued https www you
    • 有没有办法获取正在运行或新打开的资源管理器窗口的 IExplorerBrowser 接口以供后续 BrowseToXXX 调用?

      这么问是因为在上一个问题 https stackoverflow com questions 6220899 answer 6221898我是指向 IExplorerBrowser 的指针 但是它创建了一个子窗口 而我想模拟资源管理器的 查
    • 如何使PHP库松耦合? [关闭]

      就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
    • 无扫描器解析器生成器

      序幕 尽管解析器 上下文无关语法 识别的语言集严格大于扫描器 常规语法 识别的语言集 但大多数解析器生成器都需要扫描器 请不要试图解释其背后的原因 我很了解它们 我见过解析器 不需要像这样的扫描仪 Elkhound http scottmc
    • 如何为抽象工厂创建的类设置特定属性?

      是否可以让具体工厂使用抽象工厂模式为其创建具有特定类型参数的具体类 或者由各自的具体工厂创建的不同具体类是否需要具有相同的字段 例如 在下图中 您将如何使用客户端 应用程序 给出的不同参数集来实例化 WinButton 和 OSXButto
    • 两个程序对象运行时比较的方法

      我正在进行一种特定类型的代码测试 该测试相当麻烦并且可以自动化 但我不确定最佳实践 在描述问题之前 我想澄清一下 我正在寻找合适的术语和概念 以便我可以阅读有关如何实现它的更多信息 当然 欢迎就最佳实践提出建议 但我的目标很具体 这种方法叫
    • 面向对象编程语言中的引用默认情况下是否应该不可为空? [关闭]

      就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
    • 如何在 Perforce 树中查找未跟踪的文件? (svn状态的模拟)

      有人有脚本或别名来查找 Perforce 树中未跟踪 实际上 未添加 的文件吗 编辑 我更新了对此已接受的答案 因为看起来 P4V 在 2009 年 1 月的版本中添加了对此的支持 EDIT 请用p4 status现在 不再需要跳圈了 参见
    • 如何高效计算连续数的数字积?

      我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
    • 关于使用My作为类名前缀的意见

      就我个人而言 我从来不喜欢MyObject类的命名 我猜现状会同意 但我想看看争论的另一面 以及它是否有任何有效性 我的 已被我使用 请使用其他内容
    • 有人还在使用客户端服务器架构吗[关闭]

      Closed 这个问题需要多问focused help closed questions 目前不接受答案 我编写软件已有几十年了 现在一切都是网络 在网络出现之前 我们拥有的客户端服务器应用程序基本上是直接与数据库对话的胖客户端应用程序 它
    • 获取Windows下新线程/删除线程的通知

      创建 DLL 时 您可以在 DllMain 函数 DLL THREAD ATTACH DLL THREAD DETACH 中获取有关新线程 退出线程的通知 有没有办法在 非托管 可执行文件中从 Windows 获取这些或等效通知 是的 在您
    • 承诺的反面是什么?

      承诺代表将来可能可用 或无法实现 的值 我正在寻找的是一种数据类型 它表示将来可能变得不可用的可用值 可能是由于错误 Promise a b TransitionFromTo
    • 有向无环图的人类可读文本表示

      一棵树有一堆人类和机器可读的文本表示 例如嵌套列表 以各种表示形式 例如 JSON 和 YAML 和 XML 与缩进相结合 它们使我们很容易想象得到的结构 但我没有看到任何具有相同水平可读性的东西有向无环图 https en wikiped
    • 二维空间中的重叠线段

      我需要找出两条线是否相互重叠 如果两条线平行 我有返回 0 的交集代码 但接下来我需要知道这两条平行线是否重叠 Edit A C B D 1号线 A B 2号线 C D 我需要确定第 1 行是否与第 2 行重叠 但两条线的斜率都可以 gt
    • 将 RGB 转换为灰度/强度

      当从 RGB 转换为灰度时 据说应该对 R G 和 B 通道应用特定的权重 这些权重是 0 2989 0 5870 0 1140 据说这是因为人类对这三种颜色的感知 感受不同 有时也有人说这些是用于计算 NTSC 信号的值 但是 我在网上没
    • 如果数据库可访问,加盐和散列有什么意义?

      我刚刚学习了散列的概念 嘿 不要忘记盐 并使用盐来确保密码安全 散列它是一种单向加密 实际上不是加密而是散列 因此无法对其进行逆向工程 加盐是在散列之前在密码上添加随机创建的值的前缀或附加值 因为散列 只是散列 的问题是 一些天才提供了字典
    • 使用对象列表构建树

      我有一个带有属性 id 和parent id 的对象列表 我想建造一棵树来连接那些孩子和父母 1 个父对象可以有多个子对象 并且有一个对象将成为所有对象的祖先 实现该功能最快的算法是什么 我使用 C 作为编程语言 但其他语言也可以 像这样的
    • 什么是 NOR 逻辑运算符?

      Is nor a 或 b a 或 b a 和 b 还有什么吗 a 或 b see http en wikipedia org wiki Logical NOR http en wikipedia org wiki Logical NOR了解
    • 识别鼠标移动的算法

      我想知道是否有任何研究 算法可以指定鼠标在识别 等字符时的偏差量使用鼠标绘制 某种光学字符识别 但可能是一个更简单的版本 是否有某种算法可以让我说用户绘制的问号确实是一个问号 而不是其他具有一定准确性的东西 就像 Windows 平板电脑软

    随机推荐

    • CXF/ JAX-RS :从拦截器返回自定义响应

      当REST调用过程中发生异常时 我们需要返回自定义的错误代码和错误消息 我们创建了一个异常映射器提供程序 它适用于应用程序代码中的异常 但是 当 CXF 代码发生异常时 例如 我编写的 CustomValidationInterceptor
    • 如何在可变参数模板中匹配空参数包

      我有代码 template
    • 在 Xamarin.Forms 中使用 Thread.Sleep

      我想执行以下操作 MainPage new ContentPage Content new StackLayout Children new Button Text Thread Sleep Command new Command gt T
    • 确定 nvcc 需要哪些 gencode(compute_、arch_)值 - 在 CMake 中

      我使用 CMake 作为我的代码的构建系统 其中涉及 CUDA 我正在考虑将决定哪个任务自动化compute XX and arch XX我需要传递给我的 nvcc 以便为我当前计算机上的 GPU 进行编译 有没有办法做到这一点 使用 NV
    • 如何在 jqgrid 中添加新的按钮/图像列

      我在 ASP net MVC Web 应用程序中使用 JQgrid 我可以使用以下命令添加名为编辑的新按钮列formatters 但是 问题是我无法获取单击按钮的行中的列的值 例如 如果我单击第四行上的按钮编辑 新添加 我将需要获取该特定行
    • 在 Azure 存储上托管 SQLite DB?

      我需要在 Azure 上托管一个 SQLite 数据库 该数据库将在多个 Web 应用程序之间共享 我唯一的选择似乎是 Azure Blob 或文件存储 因为它们摆脱了提供在 Web 实例之间共享的专用存储的 Azure 网站 但是 似乎没
    • 如何条件正则表达式

      我想要一个正则表达式 如果它有 3 个实例 它就做一件事 在字符串中 如果它有超过 3 个实例 则为其他内容 例如 aaa bbb ccc ddd one part of the regex aaa bbb ccc ddd eee the
    • 创建 R 包时包含 jar 文件

      我创建了一个 R 框架包 lib jarFileHere jar R r code file R The r code file R尝试引用一个类文件jar文件在这里 jar library rJava library rjson onLo
    • 如何从 Blob 转到 ArrayBuffer

      我正在研究 Blob 我注意到当你有 ArrayBuffer 时 你可以轻松地将其转换为 Blob 如下所示 var dataView new DataView arrayBuffer var blob new Blob dataView
    • 如何在Go中调用linux共享库函数?

      我有一个 so 文件 我想在 Go 代码中调用其函数 我该如何去做呢 我已经阅读了 cgo 和 syscall 包 它们接近我想要的 但我没有看到任何可以调用 so 文件中的函数的地方 我想完全实现 ctypes 包在 Python 中的功
    • 如何在添加数组之前检查特定对象是否已存在于数组中[重复]

      这个问题在这里已经有答案了 我有这个数组 name Olvier id 123 name Olvier id 124 现在我的目标是防止再次将相同的对象添加到数组中 name Olvier id 123 有没有一种方法可以做到这一点 如果您
    • document.getElementsByTagName("*") 或 document.all

      document getElementsByTagName 适用于 IE Firefox Opera 但不适用于 Chrome 和 Safari document all适用于 IE Chrome Safari 但不适用于 Firefox
    • 如何在 MVC 中实现工作单元:职责

      谁有责任 谁负责启动和完成 MVC 架构中的工作单元 这不是控制者的责任 它违反了SRP 控制器根本不应该知道 UoW 在 Web 中 通常对服务器的每个请求使用一个 UoW 在这种情况下 UoW 应在请求结束时进行处理 并在请求开始后的某
    • 从 unique_ptr 初始化shared_ptr

      后续this问题 最近我一直在处理一些指向 C 风格数组的智能指针 我最终做了推荐的事情并使用指向向量的智能指针代替 但在那段时间 我得到了一些建议 不要使用shared ptr
    • 如何更改整个应用程序的语言? [复制]

      这个问题在这里已经有答案了 我正在制作一个应用程序 我希望在其中有一个显示语言选择页面的页面 到目前为止 我已经包括了英语 印地语和马拉地语 并将英语设置为默认值 我的问题是 如何在所选语言中更改整个应用程序的语言 选择语言后 每当我重新打
    • Facebook“赞”按钮和 # URL 字符串?

      如果 ajax Web 应用程序中的 赞 按钮引用同一页面但使用不同的 字符串 Facebook 会如何处理这些按钮 它是否将它们视为不同的页面来 点赞 例如 如果我得到 4 个 赞 点击 mysite com articles story
    • python 中发生异常时的变量范围[重复]

      这个问题在这里已经有答案了 while True try 2 0 except Exception as e break print e 给出 整数除或以零为模 我以为范围e是在while阻止并且外部无法访问它print陈述 我错过了什么
    • ipython 笔记本 - $DISPLAY 变量错误[重复]

      这个问题在这里已经有答案了 我正在 ubuntu 虚拟机上运行 IPython 笔记本 到目前为止 一切都很好 除了我无法进行交互式 matplotlib 绘图 我得到的错误是 TclError no display name and no
    • 来自不同进程的VHDL驱动信号

      我对以下 VHDL 代码有一个小问题 process zbroji begin if rising edge zbroji then oduzima lt 0 ucitanPrvi lt 1 broj1 lt ulaz broj end i
    • “数据结构”和“数据类型”之间有区别吗?

      我就读的大学考试中经常出现的两个问题是 定义数据类型 分类并解释数据类型 定义数据结构 分类并解释数据结构 无论如何 它们不是同一件事吗 考虑一下您正在制作一个Tree