Implemente uma lista dinâmica de números positivos em que os números ímpares fiquem todos juntos no início da lista e os pares fiquem todos juntos no final da lista
b. Implementa a função INIC que permite fazer a carga inicial da lista

Passo 1

Beleza, vamos lá! O que a gente precisa fazer aqui é implementar uma função chamada INIC que vai permitir carregar inicialmente uma lista dinâmica de números positivos. Nessa lista, todos os números ímpares devem ficar juntos no começo, e os números pares devem ficar juntos no final. Para isso, vamos precisar entender sobre estruturas de dados, especificamente listas dinâmicas, e como manipular nós dentro dessa lista para organizar os números conforme a regra dada.

Passo 2

Primeiro, vamos definir como será a nossa lista dinâmica. Em programação, uma lista dinâmica é uma estrutura que pode crescer e diminuir conforme adicionamos ou removemos elementos. Para isso, vamos usar uma estrutura chamada “nó”, que contém o valor do número e um ponteiro para o próximo nó na lista.

Passo 3

Vamos criar a estrutura do nó em C, por exemplo:
typedef struct No {
    int valor;
    struct No* proximo;
} No;
Aqui, cada nó tem um campo valor para armazenar o número e um ponteiro proximo que aponta para o próximo nó na lista.

Passo 4

Agora, vamos implementar a função INIC que vai receber um array de números e criar a lista dinâmica organizada com os ímpares primeiro e os pares depois. A ideia é percorrer o array de entrada, verificar se cada número é ímpar ou par e adicioná-lo na posição correta da lista.

Passo 5

Para verificar se um número é ímpar ou par, usamos o operador módulo %. Se numero % 2 != 0, o número é ímpar; caso contrário, é par. Vamos manter dois ponteiros, um para a parte dos ímpares e outro para a parte dos pares, e conectar as duas partes no final.

Passo 6

Vamos ao código da função INIC:
#include <stdio.h>
#include <stdlib.h>

typedef struct No {
    int valor;
    struct No* proximo;
} No;

typedef struct Lista {
    No* inicio;
    No* fim;
} Lista;

Lista* INIC(int* elementos, int tamanho) {
    Lista* lista = (Lista*)malloc(sizeof(Lista));
    lista->inicio = NULL;
    lista->fim = NULL;

    No* inicioImpares = NULL;
    No* fimImpares = NULL;
    No* inicioPares = NULL;
    No* fimPares = NULL;

    for(int i = 0; i < tamanho; i++) {
        No* novo = (No*)malloc(sizeof(No));
        novo->valor = elementos[i];
        novo->proximo = NULL;

        if(novo->valor % 2 != 0) { // Ímpar
            if(inicioImpares == NULL) {
                inicioImpares = novo;
                fimImpares = novo;
            } else {
                fimImpares->proximo = novo;
                fimImpares = novo;
            }
        } else { // Par
            if(inicioPares == NULL) {
                inicioPares = novo;
                fimPares = novo;
            } else {
                fimPares->proximo = novo;
                fimPares = novo;
            }
        }
    }

    if(inicioImpares != NULL) {
        lista->inicio = inicioImpares;
        if(inicioPares != NULL) {
            fimImpares->proximo = inicioPares;
            lista->fim = fimPares;
        } else {
            lista->fim = fimImpares;
        }
    } else {
        lista->inicio = inicioPares;
        lista->fim = fimPares;
    }

    return lista;
}

Resposta

Prontinho! A função INIC está implementada e agora você pode usá-la para criar uma lista dinâmica onde os números ímpares ficam juntos no início e os pares no final.

Exercícios relacionados

Agora vamos trabalhar com arquivos:
a. Implemente um procedimento que grave os dados da lista em um arquivo binário.
Implemente uma lista dinâmica de números positivos em que os números ímpares fiquem todos juntos no início da lista e os pares fiquem todos juntos no final da lista
d. Implemente a função RETIRAR que retira da lista a primeira ocorrência de um determinado valor
Implemente um programa para manipular os dados dos usuários da biblioteca. Crie uma estrutura contendo as variáveis: a. Crie uma lista para armazenar os dados. As funcionalidades que devem ser implementadas são: criar lista, incluir usuário, excluir usuário, buscar (pelo CPF). Conta o número de alunos de determinado curso.
Elabore um programa que solicita ao usuário uma sequência de caracteres e os armazena em um vetor alocado dinamicamente. Em seguida, realize a cópia dos caracteres para um outro vetor alocado dinamicamente em que são excluídos os espaços.