Пытался устранить ошибку сегментации, но не смог - PullRequest
0 голосов
/ 18 мая 2019

При вводе значения в головной узел работает, но при создании средних узлов выдает ошибку сегментации. Какие изменения я должен сделать?

Пробовал вносить различные изменения, также пытался устранить ошибку сегментации, просматривая экземпляры NULL, но не смог. Прошу прощения, если вопрос кажется глупым, но я очень старался.

#include <iostream>

using namespace std;
class node
{
    public:
    int data;
    node *next;
};
node *head,*pre,*curr,*tail;
void createhead(int roll)
{
    head->data=roll;                                   //creating head
    head->next=NULL;
    pre=head;
}
 void createlist(int roll)
{
    curr->data=roll;                                    //creating new node
    curr->next=NULL;                                    //in this two            lines.
    pre->next=curr;
    pre=curr;
}
void disp()
{
    curr=head;
    while(curr!=NULL)
    {
        cout<<"Value---- \t"<<curr->data<<"\n";
        curr=curr->next;
    }
}
int main()
{
    head =new node();
    pre=new node();
    tail=new node();
    cout<<"Enter 999 to stop\n";
    int roll;
    cout<<"enter roll number\n";
    cin>>roll;
    if(roll!=999)
    createhead(roll);
    for(;;)
    {
        cout<<"enter roll number\n";
        cin>>roll;
        if(roll==999)break;
        createlist(roll);
    }
    disp();
}

Ожидается создание полного связанного списка.

1 Ответ

0 голосов
/ 19 мая 2019

Идея для связанных списков заключается в том, что когда вы добавляете узел в конец списка, вы делаете две вещи:

  • создать новый предмет
  • вставить элемент в список
  • переназначить вставленный узел в качестве заголовка

enter image description here

Вот пример с вашим кодом:

void createlist(int roll)
{
    // create a new node for the roll
    curr = new node();
    curr->data = roll;
    // point the next node to the head of the list (adds it to the front)
    curr->next = head;
    // now curr is the head
    head = curr;
}

Аналогичный метод можно использовать для добавления предмета к хвосту.

Вставка элемента в середину списка потребует индексации в списке и установки следующего указателя индексированного узла, чтобы он указывал на новый узел, и установки следующего указателя нового узла, чтобы указывать на индексированный узел, следующий указатель. .

enter image description here

...