void gerar_grafo(int tamanho, float densidade) { int i, k, j, dest, peso, max_nodos, cont_max, max_atual; TipoLista* lista; lista = cria_lista(tamanho); max_nodos = (int)tamanho*densidade; for (i=0; i<tamanho; i++) { max_atual = max_nodos - lista->nodos[i].quantidade; for (k=0; k<max_atual; k++) { cont_max = 0; do { dest = rand()%tamanho; cont_max++; if (cont_max > tamanho) break; }while (tem_item(*lista, i, dest) || dest == i || lista->nodos[dest].quantidade == max_nodos); if (cont_max < tamanho) { peso = 10 + rand()%1000; add_item(lista, i, dest, peso); add_item(lista, dest, i, peso); } else { for (j=0; j<tamanho; j++) { if (!tem_item(*lista, i, j) && j != i && !(lista->nodos[j].quantidade == max_nodos)) { peso = 10 + rand()%1000; add_item(lista, i, j, peso); add_item(lista, j, i, peso); break; } } } } } grava_lista(*lista, lista->tamanho, max_nodos); apaga_lista(lista); }
void apagar_linha(ptr_no linha) /*Apagar qualquer linha*/ { remove_grandes(linha->acima); /* Apagar as pecas da linha de cima que ocupem a que vamos apagar*/ apaga_lista(linha->lista_pecas); /* apagar a lista de pecas da linha a apagar*/ top = apagar_no(linha,top); /*Apaga a linha*/ }