【发布时间】:2019-08-08 15:38:27
【问题描述】:
我最近转入了另一所学校和 cs 课程。与我以前学校教授的 java 相比,使用的语言是 C。我的主要问题之一可能是由于没有编写足够的 C 代码导致我无法找到制作抽象数据类型的标准。
据我所见,这些实现方式有很多种,而且缺乏可见的标准让我担心我在自学 C 时遗漏了一些东西。我见过对用户隐藏 init 变量的实现比如
#define createVector(vec) Vector vec; void init_vector(&vec)
还有另一个版本,我更习惯使用句柄来保存从 createVector() 函数返回的指向 struct 的指针。问题是我在网上或我的课程 2 书中找不到任何关于句柄的详细描述。课程 2 的书只展示了接口和方法,但没有展示它们是如何以一种对用户隐藏实现的方式组合在一起的。我想知道 ADT 是否有“正确”的方式/标准?有问题的书是 Robert Sedgewick “Algorithms in C - Third Edition”。
【问题讨论】:
-
您可以使用函数指针创建一个结构,或者适当地命名函数以明确它们与结构相关联。例如。带有函数指针的链表可能如下所示:github.com/Xatenev/c-algorithms/blob/master/src/data-structures/…
-
我所知道的过程没有法律上的(如“ISO”或“ECMA”)标准。有多种事实上的标准——您发现的所有这些不同的变体。您展示的宏将在我的建议“好主意”列表中大放异彩。
标签: c abstract-data-type