Baixe o app para aproveitar ainda mais
Prévia do material em texto
Com base nas operações de inserção no início e final da lista simplesmente encadeada e que possuem, respectivamente, o seguinte cabeçalho: · void inserirFinal(Lista* lista,int valor); · void inserirInicio(Lista* lista,int valor); Desenvolva uma função de inserção que recebe como parâmetro um valor inteiro qualquer e que o armazene na lista de acordo com a seguinte regra: os valores pares devem ser inseridos no início da lista e os valores ímpares no final da lista. Considere que as funções InserirFinal() e InserirInicio() já estão implementadas. Portanto, faça apenas o chamado dessas funções na nova função, chamada inserir(), que será implementada por você. Explique o funcionamento da função implementada por você em pelo menos quatro linhas. Exemplificando as regras de inserção dos pares e ímpares, a inserção dos valores 10, 3, 44, 8, 21 e 9, ao final da operação de inserção, a lista terá os valores assim distribuídos: O cabeçalho da função a ser desenvolvida possui a seguinte sintaxe: void inserir (Lista* lista, int valor), recebendo como parâmetro a lista que será manipulada e o valor inteiro que será inserido nessa lista. RESPOSTA : void inserir(Lista* lista, int valor){ No *ultimo = ultimoElemento(lista); // declarada e inicializada a variável ultimo com o nó que é retornado pela função ultimoElemento() No *primeiro = primeiroElemento(lista); // declarada e inicializada a variável primeiro com o nó que é retornado pela função primeiroElemento() if((listaVazia(lista)) || (ultimo->dado = (valor % 3 == 0))){ // se o resto da divisão (valor) por 3 for igual a zero, então o elemento inserido irá para o final da lista inserirFinal(lista,valor); } else{ if((primeiro->dado) = (valor % 2 == 0)){ // se o resto da divisão (valor) por 2 for igual a zero, então o elemento inserido irá para o início da lista inserirInicio(lista,valor); }
Compartilhar