void fecharDiretorio(manip *manip) { if (manip == NULL) return; destroiLista(manip->lista); free(manip); }
void atualizarLista(manip *manipulador) { manip *tmp; tmp = abrirDiretorio(manipulador->path); destroiLista(manipulador->lista); manipulador->lista = tmp->lista; free(tmp); }
void buscaLargura(Grafo g, int partida) { int i, v, a, w; Fila fila = criaFila(); Lista listaBrancos = criaLista(); Lista listaPretos = criaLista(); Lista listaVisitados = criaLista(); for(i = GVprimeiroVertice(g); i != 0; i = GVproximoVertice(g, i)) { insereNaLista(listaBrancos, i); } printf("Todas os vértices estão brancos.\n"); printf("Nenhuma aresta foi visitada.\n"); v = partida; printf("O vertice %d está cinza.\n", v); insereFila(fila, v); retiraLista(listaBrancos, pegaPosLista(listaBrancos, v)); while(!vaziaFila(fila)) { v = retiraFila(fila); printf("Vertice %d ativado.\n", v); for(a = GAprimaSaida(g,v); a != 0; a = GAproxSaida(g,v,a)) { insereNaLista(listaVisitados, a); printf("A aresta %d foi visitada.\n", a); w = GVvizinho(g,a,v); if(existeNaLista(listaBrancos, w)) { insereFila(fila, w); printf("O vertice %d está cinza.\n", w); retiraLista(listaBrancos, pegaPosLista(listaBrancos, w)); } } insereNaLista(listaPretos, v); printf("O vertice %d está preto.\n", v); printf("Vertice %d desativado.\n", v); } destroiLista(listaBrancos); destroiLista(listaPretos); destroiFila(fila); }
No* subtraiPolinomio(No *P1, No *P2) { No *aux = P2; No* P2negativa = criaLista(); No* P3 = criaLista(); while(aux != NULL) {//loop que multiplica o polinômio P2 por -1 P2negativa = insereOrdenado(P2negativa, (aux->coef * (-1)), aux->exp); aux = aux->prox; } //analálogo ao soma polinômio P3 = concatenaLista(P1, P2negativa); simplificaPolinomio(P3); destroiLista(P2negativa); return P3; }
int main() { int opcao; exibeIntroducao(); inicializaLista(); while (1) { exibeMenuPrincipal(); scanf("%d", &opcao); switch (opcao) { case 0: return EXIT_SUCCESS; break; case 1: adicionarContato(); break; case 2: retirarContato(); break; case 3: obterContato(); break; case 4: exibirContatosEmOrdem(); break; case 5: printf("Contatos armazenados: %d", aLista.ultimo + 1); break; case 6: destroiLista(); puts("Lista limpa."); break; default: puts("Opção inválida"); break; } } }
manip* abrirDiretorio(char *dir) { struct dirent *ep, *epCopia; if (dir == NULL) /*Argumento inválido */ return NULL; manip *manipulador = (manip*) malloc(sizeof(manip)); if (manipulador == NULL) /* Sem memória */ return NULL; manipulador->lista = criaLista(); if (manipulador->lista == NULL) { /* Sem memória */ free(manipulador); return NULL; } DIR *dp = opendir(dir); if (dp == NULL) { /* Diretório inválido */ destroiLista(manipulador->lista); free(manipulador); return NULL; } strcpy(manipulador->path, dir); if (dir[1] != '\0') /*Não estamos no diretório raiz*/ strcat(manipulador->path, "/"); while ((ep = readdir(dp)) != NULL) { epCopia = (struct dirent*) malloc(sizeof(struct dirent)); memcpy(epCopia, ep, sizeof(struct dirent)); adicionarOrdem(manipulador->lista, epCopia); } closedir(dp); return manipulador; }
/** * @brief Destrutor da lista. Deleta todos os elementos para impedir vazamento de memória */ ~ListaEnc() { destroiLista(); }
int main(){ lista *li; li = criaLista(); int opcao; while(1){ limpaTela(); colocaAcentos(); printf("[1] Adicionar Telefone \n[2] Imprimir Lista de telefones\n[3] Quantidade de telefones na lista\n[4] Remover ultimos\n[99] Sair\n\n"); limpaBuffer(); printf("Digite a opção desejada: "); scanf("%d",&opcao); if(opcao == 1){ int qntdTelefones,i; printf("Digite a quantidade de telefones que deseja inserir: "); limpaBuffer(); scanf("%d",&qntdTelefones); Telefone tel[qntdTelefones]; for(i=0; i<qntdTelefones; i++){ limpaBuffer(); printf("Digite o nome: "); gets(tel[i].nome); limpaBuffer(); printf("Digite a marca: "); gets(tel[i].marca); insereNaListaPrimeiro(li,tel[i]); } limpaTela(); }else if(opcao == 2){ limpaTela(); imprimeLista(li); pausaTela(); }else if(opcao == 3){ limpaTela(); int qntd; qntd = quantidadeElementosLista(li); printf("Quantidade de telefones cadastrados: %d\n",qntd); pausaTela(); }else if(opcao == 4){ int qntdRemocao,i; limpaBuffer(); printf("Digite a quantidade de telefones que deseja remover: "); scanf("%d",&qntdRemocao); for(i=0; i<qntdRemocao; i++){ removerNaListaPrimeiro(li); } }else if(opcao == 99){ char confirmacao[4]; limpaBuffer(); printf("Deseja mesmo sair? (sim ou nao): "); gets(confirmacao); if(strcmp(confirmacao,"sim")==0){ return 0; } } } destroiLista(li); return 0; }
/** Destrutor padrão da ListaCirc. * O destrutor padrão da ListaCirc destrói a lista circular simples. */ ~ListaCirc() { destroiLista(); }
ListaEnc<T>::~ListaEnc() { destroiLista(); }
int normalexit(char *cmd, int argc, char **argv, agenda ag) { destroiLista(ag); printf("Fechando agenda e saindo...\n"); exit(EXIT_SUCCESS); }