用位向量实现集合时部分操作的实现 Set . Set (int MaxSetsize): MaxSize maxsetsize)i assert( MaxSize >0) bit Vector =new int [MaxSize]; assert( bit Vector =0); for( int 1=0; 1< MaxSize; 1++) bit Vector 1=0
用位向量实现集合时部分操作的实现 Set :: Set (int MaxSetSize) : MaxSize (MaxSetSize) { assert ( MaxSize > 0 ); bitVector = new int [MaxSize]; assert ( bitVector != 0 ); for ( int i = 0; i < MaxSize; i++ ) bitVector[i] = 0; }
int Set : Addmember( const intx)( assert(x>=0 &&x< MaxSize ) if(! bit Vector[x]) i bit vector x=l; return 1;3 return O int Set: DelMember( const int x ){ assert(x>=0 &&x< MaxSize ) if bit Vector]) i bit vector]=0; return 1 return O
int Set :: Addmember ( const int x ) { assert ( x >= 0 && x < MaxSize ); if ( ! bitVector[x] ) { bitVector[x] = 1; return 1; } return 0; } int Set :: DelMember ( const int x ) { assert ( x >= 0 && x < MaxSize ); if ( bitVector[x] ) { bitVector[x] = 0; return 1; } return 0; }
Set& set : operator =( Set& right)i assert( MaxSize=- right. MaxSize )i for( int 1=0; 1< MaxSize; 1++) bit Vector[]=right. bit Vector[i] return x this int Set: Contains( const int x ){ assert(x>=0 &&x< MaxSize ) return bit vector
Set& Set :: operator = ( Set& right ) { assert ( MaxSize == right.MaxSize ); for ( int i = 0; i < MaxSize; i++ ) bitVector[i] = right.bitVector[i]; return *this; } int Set :: Contains ( const int x ) { assert ( x >= 0 && x < MaxSize ); return bitVector[x]; }
Set& Set : operator + Set& right i assert( MaxSize=- right. MaxSize ) Set temp( MaxSize ) for( int i=0; i< MaxSize; 1++) temp. bit Vector bit Vector[i right. bit Vectorj; return temp: this[o1110000110 rgto0100101010 temp 101110101110
Set& Set :: operator + ( Set& right ) { assert ( MaxSize == right.MaxSize ); Set temp ( MaxSize ); for ( int i = 0; i < MaxSize; i++ ) temp.bitVector[i] = bitVector[i] || right.bitVector[i]; return temp; } this right temp 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 1 1 0
Set& Set : operator *( Set right )i assert( MaxSize=- right. MaxSize )i Set temp( MaxSize ) for( int i==0; i< MaxSize; 1++) temp. bit Vector1] bit Vector[i] & right bit Vector[i: return temp: this[o1110000110 rgto0100101010 temp[o010000000
Set& Set :: operator * ( Set & right ) { assert ( MaxSize == right.MaxSize ); Set temp ( MaxSize ); for ( int i = 0; i < MaxSize; i++) temp.bitVector[i] = bitVector[i] && right.bitVector[i]; return temp; } this right temp 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0