我试图编写一个简单的程序将整数值存储在3个节点的链表中,但是在插入第一个值后显示“ Segmentation fault(core dumped)”。
我对C ++比较陌生,所以我真的不知道自己在做什么错。我曾尝试在Internet上研究解决方案,但似乎找不到任何方法。
#include<iostream>
using namespace std;
struct node{
int num;
node *next;
};
node *head=NULL;
node *tail=NULL;
void create(int num){
node *temp=new node;
temp->num=num;
temp->next=NULL;
if(head=NULL){
head=temp;
tail=temp;
temp=NULL;
}
else{
tail->next=temp;
tail=temp;
}
}
void display(node *current ){
while(current!=NULL){
cout<<current->num<<endl;
current=current->next;
}
}
int main(){
int num;
for(int i=0;i<3;i++){
cout<<"Enter a number:";
cin>>num;
}
display(head);
return 0;
}
感谢任何帮助和/或提示:)
编辑:好的,所以我看到我错过了如果子句head应该是head == NULL的话,但是现在它不在末尾显示链接列表了:(
答案 0 :(得分:1)
在if语句中将head = NULL更改为head == NULL。并请在for循环中调用create函数。这是我的解决方案:
#include<iostream>
using namespace std;
struct node {
int num;
node *next;
};
node *head = NULL;
node *tail = NULL;
void create(int num) {
node *temp = new node;
temp->num = num;
temp->next = NULL;
if (head == NULL) {
head = temp;
tail = temp;
temp = NULL;
}
else {
tail->next = temp;
tail = temp;
}
}
void display(node *current) {
while (current != NULL) {
cout << current->num << endl;
current = current->next;
}
}
int main() {
int num;
for (int i = 0; i < 3; i++) {
cout << "Enter a number:";
cin >> num;
create(num);
}
display(head);
return 0;
}