#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
struct Node {
int data;
Node* next;
};
struct Node* takeInput(){
struct Node* head;
cout<<"Enter element:";
int data;
cin>>data;
while(data!=-1){
struct Node* newNode=new (struct Node);
newNode->data=data;
newNode->next=NULL;
if(head==NULL){
head=newNode;
}
else{
struct Node* temp=new (struct Node);
while(temp->next!=NULL){
temp=temp->next;
}
temp->next=newNode;
}
cout<<"Enter next element: ";
cin>>data;
}
return head;
}
void print(struct Node* head){
while(head->next!=NULL){
cout<<head->data<<"->";
head=head->next;
}
}
int main(){
struct Node* head = new (struct Node);
head = takeInput();
print(head);
}
Der Segmentierungsfehler tritt auf, wenn die Funktion print() ausgeführt wird. Ohne die Ausführung der Druckfunktion läuft der Code einwandfrei. Der Code nimmt die Eingabe vom Benutzer, stürzt jedoch ab, wenn ich versuche, die verknüpfte Liste zu drucken. Ich verwende einen GCC-Compiler mit Code Blocks IDE auf einem Linux-Betriebssystem.Warum gibt mein Compiler mir einen Segmentierungsfehler, wenn ich diesen Code ausführe?
Compiler Sie Fehlersegmentierung nicht geben. Es ist dein Programm, das es "gibt". –
Was passiert, wenn Sie 'nullptr' an Ihre' print' Funktion übergeben? – iehrlich
'while (temp-> next! = NULL) {' prüft 'next' eines neuen Knotens, dessen Mitglieder nicht initialisiert sind. Wahrscheinlich wollten Sie kurz vorher "temp = head;" markieren, anstatt einen neuen Knoten zuzuweisen. –