Jump to content

Preciso de ajuda com lista encadeada


Lucas Praxedes Fischer de Mattos

Recommended Posts

estou fazendo um codigo para somar 2 listas encadeadas de numeros inteiros, porem sempre fica dando "signal: segmentation fault(core dumped)" no repl.it e "runtime error" no compilador da propria faculdade. Com a entrada "12 21" sai o resultado parcial:

"O valor é: 2 

12

1

1634545454
signal: segmentation fault(core dumped)"

Além disso, a funçao "libera" e "retira" também dão o mesmo erro. Isso, porque eu fiz literalmente igual ao codigo exemplo da professora. 

/* Programa: Exercício 4
Autor: Lucas Praxedes Fischer de Mattos (RA 156697)
Turma: IB
Concluída em: 16/11/2021*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAX 100
 
typedef struct lista{
int digt;
struct lista *prox;
} reglista;
typedef reglista *pont;
 
pont alocacao(pont lista, int val){
pont novo=(pont)malloc(sizeof(reglista));
novo->digt= val;
novo->prox= lista;
return novo;
}
 
pont retira(pont lista, int val){
pont ant= NULL, busca;
 
for(busca=lista; busca!=NULL && busca->digt!=val; busca=busca->prox)
ant= busca;
 
if(busca==NULL)
return lista;
 
if(ant==NULL)
lista=busca->prox;
else
ant->prox=busca->prox;
 
return lista;
}
 
void libera(pont lista){
  pont paux=lista, paux2;
 
while(paux!=NULL){
paux2=paux->prox;
free(paux);
paux=paux2;
}
}
 
void imprime (pont lista) {
pont paux;
for (paux = lista; paux != NULL; paux = paux->prox)
printf ("%d\n", paux->digt);
}
 
pont soma(pont lista1, pont lista2){
pont paux;
int val= lista1->digt + lista2->digt;
 
while(lista1->prox != NULL && lista2->prox != NULL){
if(val>9){
paux->prox->digt=1;
paux->digt=val-10;
}
else
paux->digt=+val;
 
lista1=lista1->prox;
lista2=lista2->prox;
paux=paux->prox;
val=lista1->digt+lista2->digt;
}
 
return paux;
}
 
int main(){
pont lista1, lista2, lista3;
char string1[MAX], string2[MAX];
int i=0;
 
scanf("%s", string1);
scanf("%s", string2);
 
while(i<strlen(string1)){
lista1=alocacao(lista1,atoi(&string1[i]));
i++;
}
i=0;
while(i<strlen(string2)){
lista2=alocacao(lista2,atoi(&string2[i]));
i++;
}
 
printf("O valor é: ");
imprime(lista1);
 
return 0;
}
Link to comment
Share on other sites

  • 4 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...