void insertar(nodotrie *mRoot, char key[]){ int nivel; int leng = strlen(key); int index; nodotrie *mRecorrer; mRecorrer = mRoot; for (nivel = 0; nivel < leng; nivel++) { mRecorrer->cant_pref++; index = CHAR_TO_INDEX( (char)tolower(key[nivel])); if ( !mRecorrer->hijos[index]){ mRecorrer->hijos[index] = getNodo(); mRecorrer->hijos[index]->letter = (char) tolower(key[nivel]); } mRecorrer = mRecorrer->hijos[index]; } mRecorrer->es_palabra = 1; mRecorrer->cant_pref++; }
int main(int argc, char **argv){ p_nodo* no; l_polinomio* polinomio; no = getNodo(); polinomio = getPolinomio(); while(1){ int escolha; float aux; printf("1 - inserir nó, 2 - imprimir polinomio, 3 - calcular polinomio, 0 - exit\n"); scanf("%d", &escolha); switch (escolha){ case 1: printf("Qual é o coeficiente(float)?\n"); scanf("%f", &no->coeficiente ); printf("Qual é o expoente(int)?\n"); scanf("%d", &no->expoente ); inserir_nodo(polinomio, no->coeficiente, no->expoente); imprime_polinomio(polinomio, 'x'); break; case 2: imprime_polinomio(polinomio, 'x'); break; case 3: printf("Qual é o valor da variável(float)?\n"); scanf("%f", &aux ); imprime_polinomio(polinomio, 'x'); polinomio->atual = polinomio->primeiro; printf("O valor de p(%.2f) = %.2f\n", aux, calcula_polinomio(polinomio, aux) ); break; case 0: while(polinomio->primeiro != NULL){ if(polinomio->primeiro->proximo != NULL){ polinomio->primeiro = polinomio->primeiro->proximo; free(polinomio->primeiro->anterior); polinomio->primeiro->anterior = NULL; }else free(polinomio->primeiro); break; } free(polinomio); free(no); exit(0); } } return 0; }
//METODO RECURSIVO PARA QUIQKSORT void qs(Nodo *lista, int lim_izq, int lim_der){ int izq, der, temporal, pivote; izq = lim_izq; der = lim_der; pivote = getNodo(lista, (lim_izq+lim_der)/2)->dato; do{ while((getNodo(lista,izq)->dato<pivote) && (izq<lim_der)){ izq++; } while((pivote<getNodo(lista,der)->dato) && (der>lim_izq)){ der--; } if(izq<=der){ temporal = getNodo(lista,izq)->dato; getNodo(lista, izq)->dato = getNodo(lista,der)->dato; getNodo(lista, der)->dato = temporal; izq++; der--; } }while(izq<=der); if(lim_izq<der){qs(lista, lim_izq, der);} if(lim_der>izq){qs(lista, izq, lim_der);} }
//METODO CONSTRUCTOR int main() { cabeza = NULL; cabeza1 = NULL; raiz = NULL; int seleccion; clock_t t1,t2; float t_ordenarBurbuja, t_ordenarQuicksort, t_insercion, t_recorido; //MENU DE LA APLICACION do{ system("clear"); if(seleccion==CARGAR){//CARGA LOS ARCHIVOS cabeza = leerArchivo(cabeza); t1=clock(); raiz = insertaArbol(cabeza, raiz); t2=clock(); t_insercion = (float)(t2-t1)/(float)(CLOCKS_PER_SEC); cabeza1 = insertarLista(cabeza, cabeza1); printf("El tiempo que tardo la inseccion = %f\n", (float)(t2-t1)/(float)(CLOCKS_PER_SEC)); } if(seleccion==IMPRIMIR){//IMPRIME AMBOS DATOS printf("Quicksort\n"); Imprimir(cabeza1); printf("Burbuja\n"); Imprimir(cabeza); printf("Los datos del arbol son: \n"); t1=clock(); inOrden(raiz); t2=clock(); t_recorido = (float)(t2-t1)/(float)(CLOCKS_PER_SEC); printf("\nEl tiempo que tardo en realizar el recorrido = %f\n", (float)(t2-t1)/(float)(CLOCKS_PER_SEC)); } if(seleccion==ORDENAR){ t1=clock(); quicksirt(cabeza1, cantidad(cabeza1)); t2=clock(); t_ordenarBurbuja = (float)(t2-t1)/(float)(CLOCKS_PER_SEC); t1=clock(); cabeza = ordenar(cabeza); t2=clock(); t_ordenarQuicksort = (float)(t2-t1)/(float)(CLOCKS_PER_SEC); } if(seleccion==REPORTE){ printf("REPORTE DE TIEMPOS \n\n"); printf("Ingresar al arbol: %f\n", t_insercion); printf("Recorrido del arbol: %f\n", t_recorido); printf("Ordenado burbuja: %f\n", t_ordenarBurbuja); printf("Ordenado quicksort: %f\n", t_ordenarQuicksort); } if(seleccion==DIAGRAMA){ graficar(t_insercion, t_recorido, t_ordenarBurbuja, t_ordenarQuicksort, cantidad(cabeza)); } if(seleccion == 9){ int n; scanf("%d", &n); printf("dato = %d\n", getNodo(cabeza1, n)->dato); } printf("\n------------------------- MENU ---------------------------\n"); printf("0. Salir \n"); printf("1. Leer Archivo \n"); printf("2. Imprimir \n"); printf("3. Ordenar Listas \n"); printf("4. Reporte \n"); printf("5. Diagrama \n"); printf("6. Limpiar Consola \n"); printf("-------------- Selecione una de las opciones ---------------\n"); scanf("%d", &seleccion); }while(seleccion!=0); system("clear"); printf("LA APLICACION TERMINO SU PROCESO \n"); return 0; }