C ++ Struct Pointer Segfault

Po pierwsze, z góry dziękuję wszystkim, którzy odpowiedzieli na ten post.

Po drugie, przejrzałem wszystkie inne posty i nie mogłem znaleźć niczego, co by mi pomogło (moje przeprosiny, jestem nowym użytkownikiem C ++).

Oto mój kod:

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;
}

Wydaje się (metodą prób i błędów w komentowaniu wierszy), że dostęp do następnego atrybutu w bieżącym wskaźniku wydaje się być problemem, ale nie wydaje mi się, aby zrozumieć dlaczego. Struktura węzła ma dwa atrybuty, * następny (który wskazuje na następny element na liście połączonej) i dane (dane węzła).

Jakieś pomysły na to, co się dzieje?

linuxuser

EDYCJA: Problem został rozwiązany - dzięki wszystkim, którzy zostawili komentarze!

Niestety, nie byłem w stanie użyć**pHead rozwiązanie do dereferencji, ponieważ problem dotyczy strony internetowej, która automatycznie wprowadza argumenty funkcji. Korzystając z poniższych komentarzy, stworzyłem prosty program, który mam nadzieję wyszczególni ten problem dla innych początkujących programistów C ++, takich jak ja:

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;  
}

Pozdrowienia,

linuxuser

questionAnswers(1)

yourAnswerToTheQuestion