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