Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos,
Sou novato em c e em programação de um modo geral mas venho aprendendo algo por meio de tutoriais e apostilas. Cheguei agora em estruturas dinâmicas de dados, mais especificamente, listas.
Como ainda estou tentando assimilar o funcionamento das listas comecei um programinha bem básico que pede ao usuário um numero e cria uma lista com base nesse numero para depois preenche-lo. Depois ele pergunta se o usuário quer adicionar itens a lista, e ai que entra o realloc que realoca memória para o ponteiro. Meu problema começa ai, pois ele da a mensagem de erro "invalid next size".
Se puderem ajudar, desde já, agradeço.
Segue o código:
#include <stdio.h>
#include <stdlib.h>
struct no
{
int numero;
struct no *prox_node;
};
typedef struct no NODE;
int main()
{
int num,add;
printf("\t\tAprendendo a trabalhar com listas dinamicas\n\n");
printf("Digite um inteiro para determinar o tamanho da sua lista: ");
scanf("%d",&num);
num = num + 1;
NODE *nodes = (NODE*)malloc((num) * sizeof(NODE));
NODE *ptr = &nodes[0];
int i,j=1;
for(i=1;i<num;i++)
{
nodes.prox_node = &nodes[j];
*
j++;*
*
}*
*
nodes**.prox_node = NULL;*
*
i = 1;*
*
while(nodes**.prox_node != NULL)*
*
{*
*
printf("\nDigite um numero para preencher a lista ");*
*
scanf("%d",&nodes**.numero);*
*
i++;*
*
}*
*
for(i=1;i<num;i++)*
*
{*
*
printf("\n%d",nodes**.numero);*
*
}*
*
printf("\n\nDigite um valor inteiro para adicionar um numero correspondente de nodes: ");*
*
scanf("%d",&add);*
*
nodes = (NODE)realloc(nodes,(num+add)sizeof(NODE));*
*
j=1;*
*
for(i=0;i<add;i++)*
*
{*
*
nodes[num+i].prox_node=&nodes[j+num];*
*
j++;*
*
}*
*
nodes[num+add].prox_node=NULL;*
*
}*
Carregando comentários...