Estou fazendo um trabalho de faculdade em C e praticamente já terminei o mesmo. Entretanto, enrosquei em um bug que não consigo sair. O meu programa, ao passar na linha aux1=aux1->next; simplesmente para de funcionar. Ele para de responder assim como acontece quando tu da um scanf sem usar & antes da variável. Alguém sabe me responder o por quê? Acho que é detalhe básico.
Segue o código abaixo:
int addin (lista *no1, lista *no2, lista *no3) {
long int soma;
soma=0;
nodeptr *aux1;
nodeptr *aux2;
aux1=no1->inicio->next;
aux2=no2->inicio->next;
while (aux1 != NULL || aux2 != NULL) {
soma=soma+(aux1->info+aux2->info);
printf ("Voltei aqui");
printf ("\nValor do aux1->info: %d\n", aux1->info);
printf ("\nValor do aux2->info: %d\n", aux2->info);
printf ("\nValor da soma: %d\n", soma);
insereElemento(no3, (soma%100000));
if (soma/100000!=0) {
soma=soma/100000;
}
aux1=aux1->next;
printf ("Valor novo do aux1: %d", aux1->info);
aux2=aux2->next;
printf ("Valor novo do aux2: %d", aux2->info);
}
A declaração dos nós da lista são dados da seguinte forma:
typedef struct node {
long int info;
struct node *next;
} nodeptr;
typedef struct {
nodeptr *inicio;
nodeptr *fim;
} lista;
Função de inserção de elemento na lista
int insereElemento (lista *no, int elemento) {
nodeptr *novo = (nodeptr *) malloc (sizeof(nodeptr));
novo->info=elemento;
if (no->inicio==NULL) {
inicializaLista(no);
} else {
no->fim->next=novo;
no->fim=novo;
novo->next=NULL;
printf ("\nElemento inserido com sucesso na lista: %d\n", no->fim->info);
}
}