(核心转储)C ++中的链接列表

时间:2019-02-04 14:41:32

标签: c++ linked-list coredump

我试图编写一个简单的程序将整数值存储在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的话,但是现在它不在末尾显示链接列表了:(

1 个答案:

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