最簡單的是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:用於限定和約束指針,並表明指針是訪問壹個數據對象的初始且唯壹的方式。