Olá pessoal,
Estou estudando linguagem C e fiquei com dúvida com relação a ponteiros e estruturas e isso gerou um erro de segmentação em meu código. Criei uma função que recebe um estrutura e um valor constante, verifica se a estrutura está vazia e faz a inserção do valor constante em uma das variáveis e posteriormente cria um nó. O problema é que só consigo imprirmir o valor da variável inteira dentro da função, enquanto que na função "main" aparece o erro de segmentação. Abaixo segue o código:
#include <stdlib.h>
#include <stdio.h>
struct Lista *insere_final(struct Lista *n, int x); //prototipo da funcao
struct Lista{
int valor;
struct Lista *proximo; //ponteiro para a proxima entrada da lista
//uso de recursividade. Uma struct dentro de outra
};
int main(){
struct Lista *inicio;
insere_final(inicio, 10);
printf("O valor fora da funcao de inicio->valor e: %d \n", inicio->valor);
return 0;
}
struct Lista *insere_final(struct Lista *n, int x){
struct Lista *novo=(struct Lista *)malloc(sizeof(struct Lista)); //alocou memoria dinamicamente para a lista
novo->valor=x;
if(n==NULL){//lista nao esta vazia
printf("n esta vazio! \n");
novo->proximo=NULL;
printf("1 - O valor dentro da funcao de novo->inicio: %d \n", novo->valor);
return novo; //novo no sera o inicio da lista
}
else{//lista nao esta vazia-vamos ao final para inserir o no
struct Lista *temp=n; //criando referencia ao primeiro no
while(temp->proximo!=NULL){//e preciso ir ao ultimo no
temp=temp->proximo;
}
novo->proximo=NULL;
temp->proximo=novo;//o ultimo no apontara para o novo no
printf("Entrou em else e esta verificando temp \n");
return n;
}
}
Desde já agradeço a todos que possam me ajudar!