Программа структуры данных связанного списка C , похоже, не работает, неизвестная ошибка

#c

Вопрос:

Вот код

Данные.h:

 #pragma once

    class List
    {
    private:
        typedef struct node{
            int data; 
            node* next; 
        }* nodePtr;
    
    nodePtr head;
    nodePtr curr; 
    nodePtr temp; 
    
   
    public: 
        List();
        void AddNode(int addData);
        void DeleteNode(int delData);
        void PrintList();
};
 

Implementation.cpp:

 #include <iostream>
#include "Data.h"
using namespace std;

List::List(){

    head = NULL;    
    curr = NULL;    
    temp = NULL;
}
void List::AddNode(int addData){    
    nodePtr n = new node;    
    n->next = NULL;    
    n->next = addData;
    
    if(head !=NULL){
        curr = head;
        while(curr->next !=NULL){
            curr = curr->next;
        }
        curr->next = n;
    }
    else
    {
        head = n;
    }   
}
void List::DeleteNode (int delData){    
    nodePtr delPtr = NULL;    
    temp = head;    
    curr = head;

    while (curr != NULL amp;amp; curr->data != delData){
        temp = curr;
        curr = curr->next;
    }
    if (curr == NULL){
        cout << delData << "is not on the listn";
        delete delPtr;
    }
    else{
        delPtr = curr;
        curr = curr->next;
        temp->next = curr;
        if (delPtr == head){
            head = head->next;
            temp = NULL;
        }
        delete delPtr;
        cout << "The value" <<delData <<"was deletedn";
    }
}
void List::PrintList(){    
    curr = head;

    while (curr !=NULL){    
        cout << curr->data << endl;
        curr = curr->next;
    }
}
 

Main.cpp:

 #include <iostream>
#include "Data.h"
using namespace std;

int main()
 {
    List Paul;
    
    Paul.AddNode(3);
    Paul.AddNode(5);
    Paul.AddNode(7);
    Paul.PrintList();
    
    Paul.DeleteNode(5);
    Paul.PrintList();
}
 

Вот ошибка всякий раз, когда я компилирую и запускаю ее:

в /tmp/ccbTqkUo.O: в функции main': Main.cpp:(.text 0x1f): undefined reference to списка::Список()’ Main.cpp:(.текст 0x30): неопределенная ссылка на List::AddNode(int)' Main.cpp:(.text 0x41): undefined reference to список::addnode из(инт)’ Main.cpp:(.текст 0x52): неопределенная ссылка на List::AddNode(int)' Main.cpp:(.text 0x5e): undefined reference to список::PrintList()’ Main.cpp:(.текст 0x6f): неопределенная ссылка на List::DeleteNode(int)' Main.cpp:(.text 0x7b): undefined reference to список::PrintList()’ взыскать 2: ошибка: для LD вернулся 1 статус выхода

Комментарии:

1. Попробуйте добавить: «#включить<Implementation.cpp> » в конце вашего файла Data.h

2. Все еще данные об ошибке.h:21:9: фатальная ошибка: Implementation.cpp: Нет такого файла или каталога #включить<Implementation.cpp>

3. как вы компилируете/связываете свой код?

4. Опечатка в строке 14 implementation.cpp , где // n->next = addData; должно быть n->data = addData; (ваш компилятор должен был предупредить о недопустимом преобразовании из int ). После исправления ваш вывод выглядит так, как вы ожидаете, узел со значением 5 удаляется. Скомпилировать как, например g -Wall -Wextra -pedantic -Wshadow -std=c 14 -Ofast main.cpp implementation.cpp -o main

5. @VoQuocThang Вы не включаете .cpp код. Вам нужно установить связь. К счастью, это в любом случае неправильный способ сделать это.