Для начала это объявление в глобальном пространстве имен
struct node
{
string name;
int number;
node* next;
};
struct node* head = 0;
^^^^^^^^^^^^^^^^^^^^^
является избыточным и нигде не используется. Удалите его.
Лучше сделать узел структуры внутренним членом класса Employees. Например,
class Employees
{
private:
struct node
{
string name;
int number;
node* next;
} *head = nullptr, *tail = nullptr;
//...
Конструктор не делает ничего особенного. Поэтому он может быть определен как конструктор по умолчанию.
Employees() = default;
Th функция addToList
должна принимать первый аргумент с помощью константной ссылки
void addToList( const string &Name, int Num )
^^^^^^^^^^^^^^^^^^
Функция PrintAll
имеет бесконечный l oop когда заголовок указателя не является нулевым указателем
void PrintAll()
{
while (head != NULL)
{
//...
}
}
и, кроме того, он вызывает неопределенное поведение, поскольку используемый ток указателя не был инициализирован
node* current;
while (current != NULL)
Функция должна быть объявлена с помощью квалификатор const, потому что он не изменяет сам список.
Также вам нужен деструктор, чтобы освободить динамически распределенную память для узлов. Также вы можете подавить конструкцию и назначение копирования.
Вот демонстрационная программа, которая показывает, как класс может быть реализован.
#include <iostream>
#include <string>
using namespace std;
class Employees
{
private:
struct node
{
string name;
int number;
node* next;
} *head = nullptr, *tail = nullptr;
public:
Employees() = default;
~Employees()
{
while ( head != nullptr )
{
node *tmp = head;
head = head->next;
delete tmp;
}
tail = nullptr;
}
Employees( const Employees & ) = delete;
Employees & operator =( const Employees & ) = delete;
void addToList( const string &Name, int Num )
{
node *n = new node { Name, Num, nullptr };
if ( head == nullptr )
{
head = n;
tail = n;
}
else
{
tail->next = n;
tail = tail->next;
}
}
void PrintAll() const
{
for ( node *current = head; current != nullptr; current = current->next )
{
cout << current->name << ' ';
cout << current->number << '\t';
}
}
};
int main()
{
Employees a;
a.addToList( "Robert", 54 );
a.addToList( "Manny", 77 );
a.PrintAll();
cout << endl;
}
Вывод программы:
Robert 54 Manny 77