// Economiza memória void desaloca(node* no) { if (no != NULL) { node* esq = no->esq; node* dir = no->dir; delete no; desaloca(esq); desaloca(dir); } }
int main() { char lin[100]; // Lê e insere o primeiro elemento gets(lin); node* raiz = new node(lin[2]); while (gets(lin) != NULL) { switch (lin[1]) { case ' ': lin[0] == 'I' ? insert(lin[2], raiz) : pesquisa(lin[2], raiz); break; case 'N': primeiro = true; inorder(raiz); putchar('\n'); break; case 'R': primeiro = true; preorder(raiz); putchar('\n'); break; case 'O': primeiro = true; postorder(raiz); putchar('\n'); } #if DESALOCA desaloca(raiz); #endif } return 0; }
void navega(PNO H) { int ini = 3, fim = 24, pos = 3; int c = ' '; int close = 0; char path[256]; PNO p_ini, p_pos, p_fim; p_pos = NULL; strcpy(path, "C:\\*.*"); init_dir(&H, path, &p_ini, &p_pos, &p_fim, ini, &pos, fim); while (!close) { if (c != ' ') { c = getch(); if (c == 0) c = getch(); } else c = 0; switch (c) { case esc: funcao_sair(ini, &close); break; case up: funcao_up(&p_ini, &p_pos, &p_fim, ini, &pos, fim); break; case down: funcao_down(&p_ini, &p_pos, &p_fim, ini, &pos, fim); break; case pgup: funcao_pgup(&p_ini, &p_pos, &p_fim, ini, &pos, fim); break; case pgdown: funcao_pgdown(&p_ini, &p_pos, &p_fim, ini, &pos, fim); break; case enter: funcao_enter(&H, path, &p_ini, &p_pos, &p_fim, ini, &pos, fim); break; case t_um: funcao_conf(&p_ini, path, ini, &pos, fim); break; case t_c: funcao_conf(&p_ini, path, ini, &pos, fim); break; case t_dois: funcao_info(ini); break; case t_i: funcao_info(ini); break; case t_tres: funcao_sair(ini, &close); break; case t_s: funcao_sair(ini, &close); break; } } desaloca(&H); }
void init_dir(PNO * H, char *path, PNO * p_ini, PNO * p_pos, PNO * p_fim, int ini, int *pos, int fim) { desaloca(&(*H)); carrega(path, &(*H)); (*p_ini) = (*p_pos) = (*p_fim) = (*H); (*pos) = ini; inc_tela(&(*p_fim), ini, fim - 1); print_dir(p_ini, path, ini, pos, fim); }
int main() { int i,linhas,colunas,**matriz; printf("Quantidade de linhas:"); scanf("%d",&linhas); printf("Quantidade de colunas:"); scanf("%d",&colunas); matriz=(int**)malloc(linhas*sizeof(int*)); if(matriz!=NULL){ for(i=0;i<linhas;i++){ matriz[i]=(int*)malloc(colunas*sizeof(int)); if(matriz[i]==NULL){ printf("Erro: Memória não alocada para M[%d]",i); return 0; } } printf("Zerando a matriz:\n"); matriz=zera(matriz,linhas,colunas); /*atribuindo por linha*/ printf("Imprimindo matriz por linha:\n"); atribui_right2down(matriz,linhas,colunas); atribui_left2down(matriz,linhas,colunas); atribui_right2up(matriz,linhas,colunas); atribui_left2up(matriz,linhas,colunas); /*atribuindo por colunas*/ printf("Imprimindo matriz por coluna:\n"); atribui_down2right(matriz,linhas,colunas); atribui_up2right(matriz,linhas,colunas); atribui_down2left(matriz,linhas,colunas); atribui_up2left(matriz,linhas,colunas); if(colunas!=linhas){ /*atribuindo pela diagonal, sim pela diagonal*/ printf("Imprimindo matriz pela diagonal:\n"); atribui_SE(matriz,linhas,colunas); system("pause"); atribui_SW(matriz,linhas,colunas); atribui_NE(matriz,linhas,colunas); atribui_NW(matriz,linhas,colunas); } desaloca(matriz,linhas); } return 0; }