Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void unionInSet(Set* self, const Set* other) {
- if(self->len == 0){
- assignSet(self,other);
- return;
- }
- if(other->len == 0){
- return;
- }
- Set temp;
- createEmptySet(&temp);
- int i=0;
- int j=0;
- int duplicates=0;
- while (i < self->len && j < other->len)
- {
- if (self->elements[i] < other->elements[j])
- i++;
- else if (other->elements[j] < self->elements[i])
- j++;
- else /* if arr1[i] == arr2[j] */
- {
- duplicates++;
- i++;
- j++;
- }
- }
- int lenCount= self->len+other->len-duplicates;
- temp.elements= (int*) malloc(sizeof(int)*lenCount);
- temp.len=lenCount;
- int x=0;
- int y=0;
- int k=0;
- while((x < self->len) && (j< other->len)){
- if(self->elements[x] < other->elements[y]){
- temp.elements[k]=self->elements[x];
- x++;
- k++;
- }
- else if(self->elements[x] > other->elements[y])
- {
- temp.elements[k]=other->elements[y];
- y++;
- k++;
- }
- else{
- temp.elements[k]=self->elements[x];
- x++;
- k++;
- y++;
- }
- }
- while(x<self->len){
- temp.elements[k]=self->elements[x];
- x++;
- k++;
- }
- while(y<other->len){
- temp.elements[k]=other->elements[y];
- y++;
- k++;
- }
- assignSet(self,&temp);
- free(temp.elements);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement