0
I made a code where the user will insert an unlimited amount of numbers in a dynamic chained list until they type 0 and stop the insertion, showing at the end, all the numbers typed by the user. Now I want to check the values entered by the user and divide them into a list of even numbers and another list of odd numbers. Can someone help me unroll the rest of that code?
code I’ve made so far:
#include <stdio.h>
#include <stdlib.h>
typedef struct ponto{
int num;
struct ponto * proximo; //PONTEIRO PARA O PRÓXIMO ELEMENTO
}t_ponto; //QUANDO FOR DECLARAR UMA VARIÁVEL NÃO SERÁ PRECISO DECLARAR TODO O "STRUCT", BASTA DECLARAR O t_ponto
int main (){
t_ponto * ini_ponto; //PONTEIRO QUE MARCA O INÍCIO DA LISTA
t_ponto * proximo_ponto; //PONTEIRO QUE MARCA O PRÓXIMO PONTEIRO DA LISTA
int resp; //VARIÁVEL PARA COLETAR A RESPOSTA DO USUÁRIO
ini_ponto = (t_ponto *) malloc (sizeof(t_ponto)); //ALOCANDO A MEMÓRIA
if(ini_ponto == NULL){ //TESTANDO SE A LISTA ESTÁ VAZIA
exit(1);
};
proximo_ponto = ini_ponto; //PRÓXIMO PONTO ESTÁ AGORA APONTANDO PARA O INÍCIO DA LISTA
while(1){
printf("Digite um numero para inserir na lista: ");
scanf("%d", &proximo_ponto->num); //A VARIÁVEL DE UMA STRUCT É ACESSADA ATRAVÉS DA "->"
printf("Deseja continuar? <1> SIM <0> NAO: ");
scanf("%d", &resp);
if(resp == 1){
proximo_ponto->proximo = (t_ponto *) malloc (sizeof(t_ponto)); //AQUI ESTAMOS ALOCANDO A MEMÓRIA PARA O PRÓXIMO ELEMENTO
proximo_ponto = proximo_ponto->proximo;
} else
break;
}
printf("\n");
proximo_ponto->proximo = NULL; //DIZENDO QUE A LISTA CHEGOU AO FIM, CASO O USUÁRIO NÃO QUEIRA MAIS INSERIR NÚMEROS
proximo_ponto = ini_ponto; //APONTANDO PARA O INÍCIO DA LISTA PARA COMEÇAR A LISTÁ-LA.
while(proximo_ponto != NULL){
printf("Os valores da lista original sao: %d;\n", proximo_ponto->num);
proximo_ponto = proximo_ponto->proximo;
}
return 0;
}
But it is to insert right into two different lists or you have to insert everything in a list to then split in two ?
– Isac