Ir para conteúdo

Preciso de ajuda com lista encadeada


Posts Recomendados

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 para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...