proc create(capacity) return array with size capacity, with default value of empty list proc rehash(set) newSet <- create(size of set * 2) for bucket in set do for value in bucket do insert(newSet, value) return newSet proc ensure_capacity(set) if elements stored in set > (size of set / 2) then return rehash(set) return set proc insert(set, value): set <- ensure_capacity(set) i <- hash(value) % size of set bucket <- set[i] if value not in bucket then elements stored in set += 1 bucket.append(value) proc contains(set, value) i <- hash(value) % size of set bucket <- set[i] if value in bucket then return true return false proc delete(set, value) i <- hash(value) % size of set bucket <- set[i] if value in bucket then delete value from bucket elements stored in set -= 1