当前位置 : 主页 > 手机开发 > 其它 >

oop – 关于面向对象编程的抽象数据类型与数据类型与数据结构

来源:互联网 收集:自由互联 发布时间:2021-06-19
我的理解是,数据结构本质上是一个蓝图,其中包含根据其规范创建最终产品所需的所有信息,数据类型是该设计的物理实现或实现(非常类似于基因型之间的差异)和表型,来自生物学). 当涉
我的理解是,数据结构本质上是一个蓝图,其中包含根据其规范创建最终产品所需的所有信息,数据类型是该设计的物理实现或实现(非常类似于基因型之间的差异)和表型,来自生物学).

当涉及面向对象的面向编程时,可以准确地说抽象类或接口是数据结构,因为它包含一组值和声明的行为,并且实现该抽象类或接口的类是数据类型,因为它是这些行为的具体表现?

如果是这种情况,那么抽象数据类型(ADT)和数据类型之间的区别又如何呢?它们是真正独特的,还是ADT只是通俗地缩短为“数据类型”?

我问这个是因为在我看来这些术语在对话中经常互换使用,这让我想知道我的理解是不正确的.

我对回答stackoverflow和这种数据结构与数据类型的讨论相当新,但希望这会有所帮助.除了我所教过的内容之外,这些链接为我做了很多工作:

Is there a difference between ‘data structure’ and ‘data type’?

Explain the difference between a data *structure* and a data *type*

http://cs.lmu.edu/~ray/notes/dtds/

首先,我将定义我对“实现”这个词的用法,因为看起来我可能会使用它与你的略有不同.我定义了类似C中的实现文件的实现.这种实现包含某些接口如何工作的源代码.例如,单链表的实现是一堆节点,每个节点包含具有指向下一节点的起始节点的数据,直到最后一个节点指向某种类型的空.从这个意义上说,我不能说数据类型是数据结构的物理实现.简化版本是数据结构实际上是一种或多种数据类型的物理实现.例如,堆栈是数据类型,而LinkedStack是实现堆栈的数据结构.虽然数据类型可以表示上述链接所描述的数据结构的所有可能实例,但并非所有数据类型都必须这样.例如,int是一种数据类型,但说它是一种数据结构并不是最好的主意.

总结一下,请按照数据类型,抽象数据类型和数据结构的顺序进行.

用于简短数据类型或类型的数据类型或类型的值和操作.例如,如果数据是42,那么42是int还是字符串?如果它是一个int,它是什么int(它的值是什么)?是正面还是负面?它有什么样的操作?我可以分开吗?从这个意义上说,数据类型完全取决于它们的外部行为.

现在,某些数据类型可能未指定任何类型的实现,这些数据类型称为抽象数据类型.基本上,如果用户无法访问或关心如何实现值和操作,则数据类型是抽象数据类型.例如,int是抽象数据类型,因为程序员不需要知道并且可能不关心如何使用int或如何添加int.然而,程序员仍然可以使用整数,添加他/她的内容.用户制作的数据类型不显示其实现也将是抽象数据类型.因此,许多数据类型都是抽象数据类型.此外,抽象数据类型可以对类似的数据类型和数据结构进行建模,并通过上述链接描述的特定数据类型和数据结构来实现.

最后,数据结构是有效存储数据的方法,它们都是关于实现的.例如,单链表和双链表是不同的数据结构,因为它们具有不同的实现.单个链接列表仅前进,而双链接列表可前进和后退.我描述了上面单链表的实现,简而言之,双链表的实现与单链表的实现相同,但每个节点也有一个指向每个前一节点的指针,以允许双链表返回.数据结构的要点是数据结构的实现(如何组织/存储数据)是如何区分的.

如果你想要一个效率双重链表的例子超过单链表,这些链接很好:

When is doubly linked list more efficient than singly linked list?

https://social.msdn.microsoft.com/Forums/vstudio/en-US/270bebdb-9032-4fc1-97c6-bc017d7e0a45/when-to-use-single-linked-list-and-when-to-use-double-linked-list?forum=csharpgeneral

否则,希望我有一些用处和好运.

网友评论