NoLista* lista_insere(NoLista * n, int a);
NoLista* lista_retira(NoLista * n, int a);
void lista_libera(NoLista * n);
void lista_imprime(NoLista * n);
NoLista* lista_acessa_prox(NoLista * n);
int lista_acessa_info(NoLista * n);
void lista_atualiza_info(NoLista * n, int a);
Além das funções normais, o TAD Lista também deve implementar e exportar a seguinte
função:
lista_comparaListasInv– A função recebe duas listas de inteiros e verifica se
uma lista é o inverso da outra, isto é, se a segunda lista contém os mesmos valores
inteiros da primeira, mas em ordem contrária. A função deve utilizar o TAD Pilha
como estrutura temporária auxiliar. A função deve retornar 1 se uma lista é o
inverso da outra e 0 caso contrário. Note que as listas recebidas pela função
podem ter tamanhos diferentes! A função tem o seguinte protótipo:
int comparaListasInv(NoLista *l1, NoLista *l2);
Após implementar as funções, crie o módulo principal do programa para testar as funções
criadas.
3
. Implemente um TAD Árvore para armazenar números inteiros com as seguintes funções:
NoArvore *arvore_criaVazia(void);
NoArvore *arvore_cria(int info, NoArvore *sae, NoArvore *sad);
int arvore_vazia(NoArvore *a);
void arvore_libera(NoArvore *a);
void arvore_imprime(NoArvore *a, int nivel);
Além das funções normais, o TAD Árvore também deve implementar e exportar as
seguintes funções:
arvore_somaFolhas– A função recebe uma árvore binária e retorna o a soma
dos números inteiros armazenados em nós que são folhas da árvore (isto é, nós
que não têm nenhum filho). Essa função tem o seguinte protótipo:
int arvore_somaFolhas(NoArvore* a);
arvore_nivel – Em uma árvore binária, o nível de um nó é definido como
sendo igual à distância do caminho da raiz até o nó em questão. Assim, o nó raiz