ошибка сегментации связанного списка c ++ - PullRequest
0 голосов
/ 25 мая 2020

Итак, я создаю программу с несколькими связанными списками, и при создании нового узла в связанном списке он имеет ошибку сегментации.

Вот пример того, как я определяю список и как я создаю узел

#include <iostream>
#include <string>

using namespace std;

class node_A
{
public:
    string nameA;
    unsigned int codeA;

    node_A* nextA;
};


class list_A
{
private:
    node_A* headA;

public:
    list_A()
    {
        headA=NULL;
    }
    ~list_A()
    {
            node_A *current, *nextA;
            current=headA;
            while(current!=NULL)
            {
                nextA=current->nextA;
                delete current;
                current=nextA;
            }
    }
    unsigned int lastNodesCode()
    {
        node_A *current=headA;
       if(headA==NULL)
       {
           return 0;
       }
       else
        {
            while(current!=NULL)
            {
                if(current->nextA==NULL)
                {
                    return current->codeA;
                }
                else
                {
                    current = current->nextA;
                }
            }
        }
    }
    void newNodeA()
    {
        node_A *newNode=new node_A;
        node_A *current;
        string nameA;

        newNode->codeA=lastNodesCode()+1;

        cout<<"Name A: ";
        getline(cin,nameA);
        newNode->nameA = nameA;



        newNode->nextA=NULL;
        if(headA==NULL)
        {
        headA=newNode;
        }
        else
        {
            current=headA;
            while(current->nextA!=NULL)
                current=current->nextA;
            current->nextA=newNode;
        }
    }


};

class node_B
{
public:
    string nameB;
    unsigned int codeB;

    node_B* nextB;
};


class list_B
{
private:
    node_B* headB;

public:
    list_B()
    {
        headB=NULL;
    }
    ~list_B()
    {
            node_B *current, *nextB;
            current=headB;
            while(current!=NULL)
            {
                nextB=current->nextB;
                delete current;
                current=nextB;
            }
    }
    unsigned int lastNodesCodeB()
    {
        node_B *current=headB;
       if(headB==NULL)
       {
           return 0;
       }
       else
        {
            while(current!=NULL)
            {
                if(current->nextB==NULL)
                {
                    return current->codeB;
                }
                else
                {
                    current = current->nextB;
                }
            }
        }
    }
    void newNodeB()
    {
        node_B *newNode=new node_B;
        node_B *current;
        string nameB;

        newNode->codeB=lastNodesCodeB()+1;

        cout<<"Name B: ";
        getline(cin,nameB);
        newNode->nameB = nameB;



        newNode->nextB=NULL;
        if(headB==NULL)
        {
        headB=newNode;
        }
        else
        {
            current=headB;
            while(current->nextB!=NULL)
                current=current->nextB;
            current->nextB=newNode;
        }
    }


};


int main()
{
    list_A A;
    list_B B;

    A.newNodeA();
    A.newNodeA();


    B.newNodeB();
    B.newNodeB();
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...