Segfault de Ponteiro de Estruturas C ++

Em primeiro lugar, agradecemos antecipadamente a todos vocês que responderam a este post.

Em segundo lugar, examinei todos os outros posts e não consegui encontrar nada que me ajudasse (minhas desculpas, eu sou novo em C ++).

Aqui está meu código:

Node* Insert(Node *head,int data) //for linked lists
{
  Node* current = head;
  while(current -> next != NULL){
      current = current -> next;
  }
  cout << head -> data;
  Node *last = new Node();
  last -> data = data;
  last -> next = NULL;
  current -> next = last;
  return head;
}

Parece (por tentativa e erro de comentário de linha) que o acesso do próximo atributo no ponteiro atual parece ser o problema, mas não consigo descobrir por quê. A estrutura do nó tem dois atributos, * next (que aponta para o próximo item na lista vinculada) e dados (os dados do nó).

Alguma idéia do que está acontecendo?

linuxuser

EDIT: O problema foi resolvido - muito obrigado a todos os que deixaram comentários!

Infelizmente, não consegui usar o**pHead solução de desreferência, pois o problema está em um site que insere automaticamente os argumentos para a função. Usando os comentários abaixo, no entanto, criei um programa simples que espero que detalhe esse problema para outros programadores C ++ iniciantes como eu:

Node* Insert(Node *head,int data)
{
    if(head == NULL){
        Node* last = new Node();
        last -> data = data;
        return last;
    }

    Node *current = head;
    while(current -> next != NULL){
        current = current -> next;
    }
    Node *last = new Node();
    last -> data = data;
    last -> next = NULL;
    current -> next = last;
    return head;  
}

Saudações,

linuxuser

questionAnswers(1)

yourAnswerToTheQuestion