#include #include #include /* Estrutura de Dados: Trata-se de uma lista ligada simples não-circular e sem nó-cabeça. O ponteiro da lista deve apontar para o primeiro nó, caso a lista não esteja vazia, e deve ser NULL no caso contrário. */ typedef struct lista { int valor; /* valor do elemento armazenado */ struct lista *prox; /* próximo elemento ou NULL no caso de ser o último elemento da lista */ } Lista; /* Funções dadas */ void DestroiLista(Lista **l); /* Destroi lista */ void ImprimeLista(Lista *l); /* Imprime a lista na tela */ /* Funções a serem implementadas */ void InsereFinal(Lista **l, int valor); /* (2,5) Questão 1: Insere elemento com o valor dado no final da lista (após o último). */ int SomaQuadrados(Lista *l); /* (2,5) Questão 2: Usa recursão para calcular a soma dos quadrados dos valores armazenados na lista e retorna o resultado da soma. */ void RemoveDepois(Lista *l, int valor); /* (2,5) Questão 3: Remove o elemento que vem imediatamente depois do primeiro elemento com o valor dado. Não faz nada, caso o valor não exista na lista ou seja o último. */ void OrdenaInsercao(Lista *l); /* (2,5) Questão 4: Coloca os elementos da lista em ordem crescente de valores usando ordenação por inserção e sem o uso de memória adicional do tipo vetor ou outra lista. Dica: nao troque os apontadores, troque apenas os valores */