Buscar

Tarefa D‌issertativa - Unidade 17 - Estrutura de Dados ESAB

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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); 
}

Continue navegando

Outros materiais