Tag: abstract data type

实现不同但相似的结构/function集而无需复制粘贴

我正在为C( 这里 )实现一组常见但又不那么简单(或容易出错)的数据结构,并且只是提出了让我思考的想法。 简而言之,问题是,实现两个使用类似算法但具有不同接口的结构的最佳方法是什么,而无需复制粘贴/重写算法? 最好的,我的意思是大多数可维护和可调试。 我认为很明显为什么你不想要同一算法的两个副本。 动机 假设你有一组结构(称之为map ),带有一组相关的函数( map_*() )。 由于地图需要将任何内容映射到任何东西,我们通常会使用void *key和void *data来实现它。 但是,想一下int到int的映射。 在这种情况下,您需要将所有键和数据存储在另一个数组中,并将其地址提供给map ,这不太方便。 现在假设有一个类似的结构(称之为mapc ,c表示“副本”),在初始化期间需要sizeof(your_key_type)和sizeof(your_data_type)并在insert上给出void *key和void *data ,它将使用memcpy复制地图中的键和数据,而不仅仅是保持指针。 用法示例: int i; mapc m; mapc_init(&m, sizeof(int), sizeof(int)); for (i = 0; i < n; ++i) { int j = rand(); /* whatever */ mapc_insert(&m, &i, &j); } 这是相当不错的,因为我不需要保留另一个i s和j s数组。 我的想法 在上面的示例中, […]

function还是方法?

如果我在C中编写抽象数据类型,是否编写了对这些数据类型执行操作并在接口(.h文件)中公开的函数,这些函数称为函数 , 方法或完全不同的东西? 我似乎无法在任何地方找到建设性的答案。 方法是C ++特定的术语吗?

C中的N-ary树

哪个是用C语言实现N-ary树的巧妙实现? 特别是,我想实现一个n-ary树,而不是自我平衡,每个节点中有一个未绑定数量的子节点,其中每个节点都包含一个已定义的结构,例如: struct task { char command[MAX_LENGTH]; int required_time; };