int main(){ Grafo *grafo = criaGrafo(8); //cria grafo com 5 vértices /*addAresta(grafo, 0, 1); addAresta(grafo, 1, 4); addAresta(grafo, 1, 2); addAresta(grafo, 1, 0); addAresta(grafo, 2, 3); addAresta(grafo, 3, 4); addAresta(grafo, 3, 0); addAresta(grafo, 4, 1);*/ addAresta(grafo, 0, 1); addAresta(grafo, 0, 3); addAresta(grafo, 0, 4); addAresta(grafo, 1, 2); addAresta(grafo, 1, 0); addAresta(grafo, 2, 3); addAresta(grafo, 2, 1); addAresta(grafo, 3, 5); addAresta(grafo, 3, 2); addAresta(grafo, 3, 0); addAresta(grafo, 4, 0); addAresta(grafo, 5, 7); addAresta(grafo, 5, 6); addAresta(grafo, 5, 3); addAresta(grafo, 6, 5); addAresta(grafo, 7, 5); printf("\n GRAFO DIRECIONADO - DIGRAFO"); mostraGrafo(grafo); printf("\n BUSCA EM LARGURA - DIGRAFO"); buscaLargura(grafo, &grafo->vetorListaAdjacencia[0]); printf("\n\n DESTROI GRAFO"); destroiGrafo(grafo); mostraGrafo(grafo); printf("\n"); return 0; }
int main() { int i; char strEntrada[200000]; No *Raiz; pilha Pilha[10000]; OP = (No*) malloc(sizeof(No)); FILE *arq = fopen("string.in", "r"); fscanf(arq,"%s",strEntrada); criaNo('@', &Raiz); Raiz = criaGrafo(strEntrada, Raiz); DecodificaOperacao(Raiz, Pilha); //for(i = 0; i<1; i++) while(Fim == 0 && Raiz->c != ':' && Raiz->c != '$') { OP = pop(Pilha); switch (OP->c) { case 'S': if(Verifica(3,Pilha, &Raiz)) { S(Pilha, &Raiz); #ifdef CONT_FLAG cont_S++; #endif } break; case 'K': K(Pilha, &Raiz); #ifdef CONT_FLAG cont_K++; #endif break; case 'B': if(Verifica(3,Pilha, &Raiz)) { B(Pilha, &Raiz); #ifdef CONT_FLAG cont_B++; #endif } break; case 'b': if(Verifica(3,Pilha, &Raiz)) { BL(Pilha, &Raiz); #ifdef CONT_FLAG cont_BL++; #endif } break; case 'P': if(Verifica(3,Pilha, &Raiz)) { CL(Pilha, &Raiz); #ifdef CONT_FLAG cont_CL++; #endif } break; case 'I': I(Pilha, &Raiz); #ifdef CONT_FLAG cont_I++; #endif break; case 'W': if(Verifica(3,Pilha, &Raiz)) { SL(Pilha, &Raiz); #ifdef CONT_FLAG cont_SL++; #endif } break; case 'C': if(Verifica(3,Pilha, &Raiz)) { C(Pilha, &Raiz); #ifdef CONT_FLAG cont_C++; #endif } break; case 'H': //Hd Hd(Pilha, &Raiz); break; case 'T': //Tl Tl(Pilha, &Raiz); break; case '*': MULT(Pilha, &Raiz); break; case '/': DIV(Pilha, &Raiz); break; case '-': SUB(Pilha, &Raiz); break; case '+': ADD(Pilha, &Raiz); break; case '^': POT(Pilha, &Raiz); break; default: Fim = 1; break; } } printf("Saida: "); printaGrafo(Raiz); printf("\n"); printf("\nChamadas ao GC:%d\n", garbage); #ifdef CONT_FLAG printf("S: %d\n",cont_S); printf("K: %d\n",cont_K); printf("I: %d\n",cont_I); printf("C: %d\n",cont_C); printf("B: %d\n",cont_B); printf("S': %d\n",cont_SL); printf("C': %d\n",cont_CL); printf("B': %d\n",cont_BL); #endif return 0; }
t_grafo* criaGrafoArq(char *nomeArq){ t_grafo* g = criaGrafo(); int i , j; FILE *fp, *fp2; fp = fopen(nomeArq, "r"); char string[1000]; char nome[200], dest[100], *ps; int ID_tarefa, executada, duracao, ini_min, pre_req, *reqs; fp2 = fopen("saida.txt", "w"); //leitura dos vertices j = 1; while(fscanf(fp, "%d '%[^']' %d %d %d %d", &ID_tarefa, nome, &executada, &duracao, &ini_min, &pre_req)>0){ reqs = (int*)malloc(sizeof(int)*pre_req); for (i = 0; i < pre_req; i++) { fscanf(fp, "%d", &reqs[i]); } fprintf(fp2, "%d %s %d %d %d %d", ID_tarefa, nome, executada, duracao, ini_min, pre_req); for (i = 0; i < pre_req; i++) { fprintf(fp2, " %d", reqs[i]); } fprintf(fp2, "\n"); insereVertice(g, nome, ID_tarefa, executada, duracao, ini_min, pre_req, reqs); fgetc(fp); move(j, 1); printw("%d %s %d %d %d %d", ID_tarefa, nome, executada, duracao, ini_min, pre_req); for (i = 0; i < pre_req; i++) { printw(" %d", reqs[i]); } refresh(); j++; } getch(); /* //Leitura das origens fscanf(fp, "%[^\n]s", string); j=0; for(i = 0; i < strlen(string); i++){ if(string[i] != ',' && string[i] != ' '){ nome[j] = string[i]; j++; } else if(string[i] == ','){ //j++; nome[j] = '\0'; j=0; insereOrigem(g, nome); } } insereOrigem(g, nome); fgetc(fp); j=0; //leitura das arestas while(fscanf(fp, "%[^\n]s", string) > 0){ ps = strtok(string, " ,"); strcpy(nome, ps); ps = strtok(NULL, " ,"); strcpy(dest, ps); ps = strtok(NULL, " ,"); insereAresta(g, nome, dest, atoi(ps)); fgetc(fp); }*/ fclose(fp); fclose(fp2); return g; }