Skip to content
Snippets Groups Projects
Commit ba1dcf6f authored by Pedro Folloni Pesserl's avatar Pedro Folloni Pesserl
Browse files

fix union function for real

parent cdd6ad8a
Branches
No related tags found
No related merge requests found
......@@ -135,35 +135,24 @@ conjunto_t *uniao_cjt(conjunto_t *c1, conjunto_t *c2) {
if ( !(uniao = cria_cjt(c1->max)) )
return NULL;
conjunto_t **menor_cjt = cardinalidade_cjt(c1) < cardinalidade_cjt(c2) ? &c1 : &c2;
conjunto_t **maior_cjt = cardinalidade_cjt(c1) > cardinalidade_cjt(c2) ? &c1 : &c2;
/* while (c1->ptr < cardinalidade_cjt(c1) && c2->ptr < cardinalidade_cjt(c2)) { */
/* if (c1->v[c1->ptr] == c2->v[c2->ptr]) { */
/* insere_cjt(uniao, c1->v[c1->ptr]); */
/* c1->ptr++; */
/* c2->ptr++; */
/* } else { */
/* if (c1->v[c1->ptr] < c2->v[c2->ptr]) { */
/* insere_cjt(uniao, c1->v[c1->ptr]); */
/* c1->ptr++; */
/* } else { */
/* insere_cjt(uniao, c2->v[c2->ptr]); */
/* c2->ptr++; */
/* } */
/* } */
/* } */
/* TODO: arrumar isso aqui de cima ^ e apagar isso aqui de baixo v */
inicia_iterador_cjt(c1);
inicia_iterador_cjt(c2);
int i;
for (i = 0; i < cardinalidade_cjt(*menor_cjt); i++) {
insere_cjt(uniao, c1->v[i]);
insere_cjt(uniao, c2->v[i]);
while (c1->ptr < cardinalidade_cjt(c1) && c2->ptr < cardinalidade_cjt(c2)) {
if (c1->v[c1->ptr] < c2->v[c2->ptr]) {
insere_cjt(uniao, c1->v[c1->ptr]);
c1->ptr++;
} else {
insere_cjt(uniao, c2->v[c2->ptr]);
c2->ptr++;
}
}
for (i = cardinalidade_cjt(*menor_cjt); i < cardinalidade_cjt(*maior_cjt); i++) {
insere_cjt(uniao, (*maior_cjt)->v[i]);
conjunto_t **ainda_falta = c1->ptr == cardinalidade_cjt(c1) ? &c2 : &c1;
int i;
for (i = (*ainda_falta)->ptr; i < cardinalidade_cjt(*ainda_falta); i++) {
insere_cjt(uniao, (*ainda_falta)->v[i]);
}
inicia_iterador_cjt(c1);
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment