25得票4回答
为什么要使用两个栈来实现队列?

如果使用数组实现,我可以看到使用两个栈的优势,因为使用数组实现栈比使用队列更容易。但是如果使用链表,有什么优点呢?将栈弹出到队列的操作会增加链表和数组实现的开销。

22得票6回答
C ++错误:void不是指向对象类型的指针

我有一个C++程序: struct arguments { int a, b, c; arguments(): a(3), b(6), c(9) {} }; class test_class{ public: void *member_func(void *arg...

18得票3回答
Scala:类型类和ADT的区别是什么?

类型类(Typeclasses)和抽象数据类型(Abstract Data Types)有什么区别? 我知道这对于Haskell程序员来说是基本的东西,但我来自Scala背景,希望能举出Scala的例子。目前我所找到的最好的解释是,类型类是“开放”的,而ADT则是“封闭”的。与结构类型进行比...

17得票2回答
C语言中的N元树

如何在C语言中实现一个整洁的N叉树?特别是,我想要实现一个非自平衡的N叉树,每个节点具有不定数量的子节点,并且每个节点都保存了一个已定义的结构体,例如:struct task { char command[MAX_LENGTH]; int required_time; };

17得票3回答
使用CUDA向量类型有什么优势?

CUDA提供了像uint2、uint4等内置向量数据类型。使用这些数据类型有什么优点? 假设我有一个由两个值A和B组成的元组。一种将它们存储在内存中的方法是分配两个数组。第一个数组存储所有A值,第二个数组以对应于A值的索引存储所有B值。另一种方法是分配一个uint2类型的数组。哪种方式应该使...

15得票5回答
堆被认为是一种抽象数据类型吗?

我正在学习数据结构课程,对于什么是抽象数据类型(ADT)和什么不是(如果不是ADT,则必须是实现)有些困惑。 具体而言,我在谈论堆。 我在维基百科上读到,“堆是一种专门的基于树的数据结构”,这是否意味着它是一个ADT?如果是,那么我就不理解下面这句话,同样来自维基百科,“堆是实现名为优先队...

15得票5回答
Clojure中替代Haskell的ADT和模式匹配的方法是什么?

在Haskell中,每当我们需要某种变体数据类型时,我们会使用ADT(代数数据类型)结合模式匹配来实现。那么Clojure开发者在这种情况下使用什么呢?

15得票6回答
Trie实现

我正在尝试在Java中实现一个非常简单的Trie,支持3个操作。我希望它有一个插入方法,一个has方法(即Trie中是否存在某个单词),以及一个toString方法来以字符串形式返回Trie。我相信我已经成功实现了插入,但是has和toString证明是困难的。以下是我目前的代码。 Trie...

15得票5回答
ADT和类之间的区别是什么?

ADT is the set of operations. ADT's are mathematical abstractions. 这是否意味着ADT和类是相同的,还是我混淆了两者?

15得票1回答
为什么代数类型只能是初始代数(或反之亦然)?

在 recursion-schemes 包中,我们可以表达一个(严格正)代数数据类型以下三个事实: 具有签名函子f 是初始 f-代数 是最终 f-余代数 例如,我们可以使用以下代码来对 [a] 进行此操作。-- (1) define and declare the signature ...