14得票6回答
Haskell中的列表:数据类型还是抽象数据类型?

据我所知,Haskell中的列表类型是用链表内部实现的。但是,语言的使用者看不到实现的细节,也无法修改构成链表的"链接"来让它指向不同的内存地址。我猜这个是在内部完成的。 那么,在Haskell中,列表类型是如何被归类的呢?它是一个"data type"还是一个"abstract data ...

14得票2回答
Java 部分有序的 Collection<E>

我正在寻找一个Java实现的数据结构,它可以容纳元素的集合并定义了部分排序,并允许按照某些拓扑顺序迭代这些元素(任何可能的顺序都可以;最好是稳定的顺序,因为集合的内容会发生变化)。 理想情况下,它应该实现Collection&lt;E&gt;、Set&lt;E&gt;或SortedSet&l...

13得票3回答
链表是抽象数据类型还是数据结构,或者两者都是?

如果按照抽象数据类型的标准定义,即黑盒子为提供一些函数以管理数据集合,那么链表就符合这个描述:一个容器,提供 add(x) 和 get(i)(等等)函数,可用于维护对象列表。 但是当你问这个问题时,这些操作的时间复杂度取决于这个容器是如何实现的: 如果你只是内部维护一个指向头结点的链接,上...

13得票8回答
C++或Java中用于保存20位整数的数据类型

在Java或C++中是否有一种数据类型可以容纳20位或更多位的整数值?long long数据类型只能容纳18位。

12得票2回答
类似于列表的模式匹配Data.Sequence

我正在使用Data.Sequence代替列表以获得更好的性能。 使用列表,我们可以执行以下操作:foo :: [Int] -&gt; Int foo [] m = m foo (x:xs) m = ... 如何使用 Data.Sequence 完成这个任务。我尝试了以下方法:foo:: S.S...

12得票3回答
在Haskell中实现临时多态性的最佳方法是什么?

我有一个多态函数,如下: convert :: (Show a) =&gt; a -&gt; String convert = " [label=" ++ (show a) ++ "]" 但有时我想传递一个Data.Map并进行一些更高级的键值转换。我知道我不能在这里使用模式匹配,因为D...

12得票5回答
抽象数据类型与数据类型和数据结构在面向对象编程中的区别

据我了解,数据结构实际上是一个蓝图,其中包含创建最终产品所需的所有信息,并且数据类型是该设计的物理实现或实现(类似于生物学中基因型和表型之间的区别)。 当涉及面向对象编程时,是否可以准确地说,抽象类或接口是数据结构,因为它包含一组值和声明的行为,并且实现该抽象类或接口的类是数据类型,因为它是...

9得票3回答
何时应该使用typedef struct而不是指向结构体的指针?

我是一名不太精通低级非面向对象编程语言的人,在工作中正在编写一些C代码。我试图创建一些良好的抽象数据类型来使用,并且通过搜索发现人们以两种方式使用基于结构体的ADT。有些人将数据类型定义为一个结构体: typedef struct adt { //content here } adt...

9得票3回答
实现不同但相似的结构/功能集而不需要复制粘贴

我正在为C语言实现一组常见但不是那么琐碎(或容易出错)的数据结构(这里),并想到了一个让我思考的想法。 简单来说,问题是如何在不必复制/重写算法的情况下实现使用相似算法但具有不同接口的两个结构? 最好的方式是什么,指的是最易于维护和调试的方法。 我认为显而易见的是,您不希望有两份相同算法的...

9得票7回答
JavaScript中原始数据类型和非原始数据类型的区别

我无法理解JavaScript中原始数据类型和非原始数据类型之间的确切区别,即使它们使用相同的名称var声明。