如何用C语言表示离散数学上的集合,并输出输入?

如题所述

最简单的是bit set(又称为Bit array、bit vector),例如用 typedef unsigned bitset[N / sizeof(unsigned)]表示一个集合(其全集的元素量为N),每个bit代表某个元素是否存在于该集合中。

这个数据结构的好处是,可用位操作(&、|、~)实现并集、交集、补集,非常适合计算机运作。

缺点是空间和时间复杂度和全集的元素数量 N 成正比,而不是集合实际的元素量。例如全集是32位整数,每个集合就需要2^32 bit = 512MB的空间。如果集合中的元素比较少,可以使用有序序列,例如排序数组(Sorted array)、二叉查找树等实现集合。它们的缺点是修改集合不是常数时间。

数据类型关键字

short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)

long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)

long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)

signed:修饰整型数据,有符号数据类型。(C89标准新增)

unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)

restrict:用于限定和约束指针,并表明指针是访问一个数据对象的初始且唯一的方式。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-12-06
N / sizeof(unsigned)]表示一个集合(其全集的元素量为N),每个bit代表某个元素是否存在于该集合中。本回答被网友采纳