// 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;
}
Beispiel #3
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);
}
Beispiel #4
0
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);
}
Beispiel #5
0
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;
}