(Ядро сброшено) связанные списки в c ++ - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь написать простую программу для хранения целочисленных значений в связанном списке из 3 узлов, но после вставки первого значения появляется сообщение «Ошибка сегментации (сброшено ядро)».

Я относительно новичок в c ++, поэтому я не знаю, что делаю неправильно.Я пытался найти решения в Интернете, но не могу найти ни одного.

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

Любая помощь и / или советы приветствуются:)

Редактировать: Хорошо, поэтому явидел, что я пропустил, что int if if head должен быть head == NULL, но теперь он не отображает связанный список в конце: (

1 Ответ

0 голосов
/ 04 февраля 2019

Изменен заголовок = NULL на заголовок == NULL в операторе if.и, пожалуйста, вызовите функцию создания внутри цикла.Вот мое решение:

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