-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharv.h
More file actions
100 lines (85 loc) · 5.45 KB
/
Copy patharv.h
File metadata and controls
100 lines (85 loc) · 5.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*----------------------------------------------------------------------
* Estrutura de nós da árvore, armazena informações sobre o conteúdo do|
* nó e dos seus respectivos galhos a esquerda e a direita |
---------------------------------------------------------------------*/
typedef struct arv Arv;
/*----------------------------------------------------------------------
* Retorna NULL para ser usado em um nó folha ou que ainda nõa tem seus|
* galhos definidos |
--------------------------------------------------------------------*/
Arv * arv_criaVazia();
/*---------------------------------------------------------------------
* Cria um nó que ainda terá seus valores definido no decorrer da |
* leitura |
--------------------------------------------------------------------*/
Arv * arv_criaSemConteudo();
/*---------------------------------------------------------------------
* LIbera a memória alocada para essa árvore e seus galhos |
--------------------------------------------------------------------*/
Arv * arv_libera (Arv * arv);
/*---------------------------------------------------------------------
* Verifia de a árvore está vazia retornando 1 (true) se estiver ou 0 |
* (false) se não estiver |
--------------------------------------------------------------------*/
int arv_vazia (Arv * arv);
/*---------------------------------------------------------------------
* Calcula o valor da operação do nó, usando os dois nós folhas |
* apontados por esse nó pai, atribuindo, ao final, o resultado ao |
* conteúdo do prório nó, possibilitando fazer as outras operações, se|
* houver, de maneira recursiva |
--------------------------------------------------------------------*/
void arv_calcula(Arv *arv);
/*---------------------------------------------------------------------
* Calcula o valor final da arvore raiz obtida pela leituda da entrada|
* e atribui esse valor a uma arvore folha, que já foi o nó raiz da |
* expressão usando recursividade |
--------------------------------------------------------------------*/
void arv_calcula_raiz(Arv * arv);
/*---------------------------------------------------------------------
* Printa o valor do número inteiro contido no nó, caso seja um nó de |
* operação, irá imprimir o número -1 (fora do escopo do trabalho) |
--------------------------------------------------------------------*/
void printaIntArvore(Arv * arv);
/*---------------------------------------------------------------------
* Printa o caractere referente a operação contido no nó, caso seja um|
* nó folha, irá imprimir o caractere 'a', que não corresponde a |
* operação aritmética |
--------------------------------------------------------------------*/
void printaCharArvore(Arv * arv);
/*---------------------------------------------------------------------
* Verifica se o nó é uma folha (nó da esquerda e direita nulos), caso|
* seja, retorna 1 (true), caso não, retorna 0 (false) |
--------------------------------------------------------------------*/
int ehFolha(Arv * arv);
/*---------------------------------------------------------------------
* Verifica se caractere é um número, caso sim, retorna 1 (true), caso|
* caso não, retorna 0 (false) |
--------------------------------------------------------------------*/
int EhNumero(char c);
/*---------------------------------------------------------------------
* Verifica se há uma árvore à esquerda do nó analizado, se tiver, |
* retorna 1 (true), se não tiver, retorna 0 (false) |
--------------------------------------------------------------------*/
int temEsquera(Arv * arv);
/*---------------------------------------------------------------------
* Le o arquivo entrada.txt e retorna a árvore raiz, que contem todos |
* os nós com operações e as folhas com os números usando |
* recursividade |
--------------------------------------------------------------------*/
Arv * LeArvRaiz(FILE * file, Arv * raiz);
/*---------------------------------------------------------------------
* Printa o resultado das expressões da árvore no arquivo saida.txt |
--------------------------------------------------------------------*/
void printaResultadoNaSaida(Arv * arv, FILE * saida);
/*---------------------------------------------------------------------
* Escreve no arquivo graphviz.txt, usando resursividade |
--------------------------------------------------------------------*/
void geraArquivoGraphviz (Arv * raiz, FILE * graphviz);
/*---------------------------------------------------------------------
* Utiliza as funções acima para ler o arquivo de entrada e printar os|
* resultados nos respectivos arquivos de saída referentes a esses |
* resultados, seja ele o resultado do nó raiz ou a representação |
* textual da representação gráfica das expressões no |
* https://dreampuf.github.io/ |
--------------------------------------------------------------------*/
void leEntradaEPrintaSaida();