Ошибка сегментации - реализация связанного списка - PullRequest
0 голосов
/ 04 февраля 2019

Я получаю ошибку сегментации в моем коде для реализации связанного списка.Любая помощь приветствуется.Благодарю.Я специально добавил здесь методы структуры.

struct node{
    int data;
    node *next;

    node(int data){
        this->data = data;
        this->next = NULL;
    }

    node(int data, node *next){
        this->data = data;
        this->next = next;
    }
    int getData(){
        return data;
    }
    node* getNextNode(){
        return next;
    }
};

class LinkedList {
    private: 
        node *head,*tail;
    public:
        linked_list(){
            head=NULL;
            tail=NULL;
        }
        void addNode(int data){
            node *temp = new node(data);
            if(head==NULL){
                head = temp;
                tail = temp;
            }
            else {
                tail->next = temp;
                tail = temp;
            }
        }
        void display(){
            node *temp;
            temp = head;
            cout<<"PRINTING LINKED LIST"<<endl; 
            while(temp!=NULL){
                cout<<temp->getData()<<" ";
                temp = temp->getNextNode();
            }
        }

};

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

LinkedList myLinkedList;
myLinkedList.addNode(1);
myLinkedList.addNode(2);
myLinkedList.display();

Переполнение стека запрашивает более подробную информацию, чтобы я мог опубликовать этот вопрос.Добавив немного тарабарщины, пожалуйста, не обращайте внимания на следующую часть: «Шалтай-Болтай» из «Песни для детей»: Шалтай-Болтай сидел на стене, Шалтай-Болтай здорово упал Все лошади царя и все люди царя.

1 Ответ

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

Проблема здесь

class LinkedList {
    private: 
        node *head,*tail;
    public:
        linked_list() {
            head=NULL;
            tail=NULL;
        }

linked_list не является конструктором для LinkedList, потому что написание отличается.Очевидно, что это должно быть так

class LinkedList {
    private: 
        node *head,*tail;
    public:
        LinkedList() {
            head=NULL;
            tail=NULL;
        }

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

...