Esempio n. 1
0
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++;
}
Esempio n. 2
0
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;
}
Esempio n. 3
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);}
}
Esempio n. 4
0
//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;
}