예제 #1
0
void fecharDiretorio(manip *manip) {
	if (manip == NULL)
		return;

	destroiLista(manip->lista);
	free(manip);
}
예제 #2
0
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);
}
예제 #4
0
파일: ll.c 프로젝트: KimGames/ProjetoAED1
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;
}
예제 #5
0
파일: main.c 프로젝트: pedropaulovc/UFSC
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;
		}
	}
}
예제 #6
0
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;
}
예제 #7
0
파일: ListaEnc.hpp 프로젝트: caiopo/INE5408
	/**
	 * @brief      Destrutor da lista. Deleta todos os elementos para impedir vazamento de memória
	 */
	~ListaEnc() {
		destroiLista();
	}
예제 #8
0
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();
 }
예제 #10
0
ListaEnc<T>::~ListaEnc() {
  destroiLista();
}
예제 #11
0
int normalexit(char *cmd, int argc, char **argv, agenda ag) {
    destroiLista(ag);
    printf("Fechando agenda e saindo...\n");
    exit(EXIT_SUCCESS);
}