/* Funcao que ordena nomes usando QUICKSORT */ void ordenaNome(contato agenda[], int p, int r){ int j; if(p < r){ j = separa(agenda, p, r); ordenaNome(agenda, p, j - 1); ordenaNome(agenda, j + 1, r); } }
void quicksort (int v[], int p, int r) { int j; if (p < r) { j = separa (v, p, r); quicksort (v, p, j-1); quicksort (v, j+1, r); } }
/* Returns in *v a sorted permutation of its elements. */ void quicksort(int v[], int p, int r) { int j; while (p < r) { j = separa(v, p, r); quicksort(v, p, j - 1); p = j + 1; } }
void quickSort (int* vetor, int r, int q) { int p; if (r < q) { p = separa (vetor, r, q); quickSort (vetor, r, p-1); quickSort (vetor, p+1, q); } }
void quicksort(int p, int r, int vetor[2][MAX]) { int q; if (p < r) { q = separa(p, r, vetor ); quicksort(p, q, vetor ); quicksort(q+1, r, vetor ); } }
void quicksort (int v[], int p, int r) { int j; // 1 if (p < r) // 2 { j = separa (v, p, r); // 3 quicksort (v, p, j-1); // 4 quicksort (v, j+1, r); // 5 } }
void quickSort( int p, int r,int *trocas) { int j; if (p < r) { j = separa(p, r,trocas); quickSort(p, j-1,trocas); quickSort(j+1, r,trocas); } }
main (){ pthread_t history; char buffer[BUFFER_SIZE]; strcpy(prompt,"#"); prepararSenales(); while (1){ argumentos[0] = "\n"; //inicializar el arreglo para que no haya errores de punteros argumentos[1] = "\n"; printf("[%s-%s] %s ", getlogin(), miPwd(), prompt); fgets(buffer, BUFFER_SIZE, stdin); separa(buffer,argumentos); pthread_create(&history, NULL, (void *)setHistorial, buffer); if (!strcmp(argumentos[0],"salir")){ printf("Saliendo de shell...\n"); exit(0); } else if (!strcmp(argumentos[0], "historial")){ mostrarHistorial(); } else if(!strcmp(argumentos[0],"cd")){ chdir(argumentos[1]); if(argumentos[1]==0) { char *str = getenv( "HOME" ); if ( chdir ( str ) < 0 ) { fprintf( stderr , "cd: ERROR\n"); } } } else if (!strcmp(argumentos[0], "mipid")){ printf("Mi id de Proceso es %d\n",(int)getpid()); } else { if(fork() == 0){ redireccion(); if(execvp(argumentos[0], argumentos)<0 ) { if (argumentos[0] == "\n"){} else{ printf ("ese comando no existe\n"); } exit(0);//matar al hijo } } /* el padre espera al hijo */ pthread_join(history, NULL); wait(NULL); } } }
int main () { Lista *a, *b; int chave; a=lst_cria(); b=lst_cria(); puts("Gerando Lista Automaticamente!"); Sleep(1500); system("cls"); /*Inserir Numeros na Lista*/ a=lst_insere(a, 100);a=lst_insere(a, 200);a=lst_insere(a, 300); a=lst_insere(a, 400);a=lst_insere(a, 500);a=lst_insere(a, 600); a=lst_insere(a, 700); printf("\n\nLista: "); lst_imprime(a); printf("Separar em qual Algarismo: ");scanf("%d", &chave); b=separa(a,chave); printf("\n\nLista 2: "); lst_imprime(b); system ("pause"); return 0; }
/* ---------------------------------------------------------------------- Funcao quickSort(Lista *l) Ordena a lista em ordem decrescente de nota utilizando o algoritmo Quicksort adaptado para listas encadeadas. */ void quickSort(Lista *lista) { /** VARIÁVEIS *****************************************************/ Lista *esquerda; /* Lista para os elementos maiores que 'i' */ Lista *direita; /* Lista para os elementos menores que 'i' */ Filme *ini; /* Apontador para primeiro filme da lista */ Filme *fim; /* Apontador para o último filme da lista */ Filme *i; /* Filme com nota pivô para as sublistas devolvido pelo algoritmo de separação */ ini = lista->ini; fim = lista->fim; /** BASE DA RECURSÃO **********************************************/ if(ini == NULL || fim == NULL) return; /* Lista vazia */ if(ini == fim) return; /* Apenas 1 elemento */ if(fim->prox == ini) return; /* Começo precede fim */ /** SEPARAÇÃO *****************************************************/ i = separa(lista); /** PASSO DA RECURSÃO *********************************************/ esquerda = (Lista *) mallocSafe(sizeof(*esquerda)); direita = (Lista *) mallocSafe(sizeof(*direita)); esquerda->ini = lista->ini; esquerda->fim = i->ant; direita->ini = i->prox; direita->fim = lista->fim; quickSort(esquerda); /* Filmes com nota maior que i->nota */ quickSort(direita); /* Filmes com nota menor que i->nora */ /* Atualiza início e fim */ lista->ini = esquerda->ini; lista->fim = direita->fim; /** LIBERAÇÃO DE MEMÓRIA ******************************************/ free(esquerda); esquerda = NULL; free(direita); direita = NULL; }
int main(){ Lista *l; l=lst_cria(); l=lst_insere(l,10); l=lst_insere(l,20); l=lst_insere(l,30); l=lst_insere(l,40); l=lst_insere(l,50); l=lst_insere(l,100); l=lst_insere(l,200); l=lst_insere(l,300); l=lst_insere(l,400); l=lst_insere(l,500); lst_imprime(l); puts(""); int elem; printf("Escolha o elemento no qual ocorrera a separacao da lista: "); scanf("%d",&elem); int busca=lst_buscar(l,elem); if(busca){ Lista *l2; l2=lst_cria(); l2=separa(l,elem); printf("Lista 1: "); lst_imprime(l); puts(""); printf("Lista 2: "); lst_imprime(l2); puts(""); lst_libera(l2); }else{ puts("Elemento nao encontrado"); } lst_libera(l); return 0; }