用位向量实现集合时部分操作的实现 Set . Set (int MaxSetsize): MaxSize( maxSetsize)( assert( MaxSize >0) bit Vector =new int [MaxSize]; assert( bit Vector I=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 int x)( assert(x>=0 &&x< MaxSize ) if(! bit Vector[x) i bit vector]=1; return 1;3 return O int Set: DelMember( const int x ){ assert(x>=0 &&x< MaxSize )i if bit Vector[]) i bit Vector[x=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 ) for( int 1=0; 1< MaxSize; 1++) bit Vector[i-right bit Vector 1 return *this int Set: Contains( const int x i 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 Vector[i] return temp: this Lo110000110 gt[oo10001010 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)( 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 Lo110000110 ghto010010100 temp[o0100000010
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