/****************************************************************************************** * decrescente() * * Arguments: h: ponteiro para um no da arvore * (*visit)(Item): ponteiro para funcao * * Returns: void * Description: imprime a arvore por ordem decrescente *****************************************************************************************/ void decrescente(link h, void (*visit)(Item)){ if (h == NULL) return; decrescente(h->l, visit); visit(h->item); decrescente(h->r, visit); }
int main(int argc, char *argv[]) { if(argc < 3) { printf("Usage : ./maker.out <qtd> <modo>\n"); return -1; } string_array *strings; strings = (string_array*)malloc(3300000*sizeof(string_array)); int tam = atoi(argv[1]); int modo = atoi(argv[2]); int i; if(modo == 1) { crescente(strings,tam); } else if(modo == 2) { decrescente(strings,tam); } else { crescente(strings,tam/2); decrescente(strings + tam/2,tam/2); shuffle(strings,tam); } for(i=0;i<tam;i++) { printf("%s\n",strings[i].dado); } return 0; }
/****************************************************************************************** * AVLimprime() * * Arguments: head: ponteiro para a cabeca da arvore AVL * (*visit)(Item): ponteiro para funcao * * Returns: void * Description: chama funcao recursiva que imprimira a arvore *****************************************************************************************/ void AVLimprime(link head, void (*visit)(Item)){ decrescente(head, visit); }