Ваш код не содержит какого-либо связанного списка, а только простые массивы. Кроме того, последняя строка (course["CS"].student=new Course*[1];
) содержит недействительный синтаксис.
- Неотъемлемый или перечисление типа должен быть использован для доступа массива (
string
с или char[]
не будут работать)
- Назначение
Course**
к Student**
объекту не допускается
Связанный список содержит от каждый из которых имеет указатель на следующий узел. Последний узел обычно имеет указатель со значением nullptr
(C++ 11) или 0
(более старый стандарт). Примечание. Существует также так называемый двойной связанный список, где каждый узел также сохраняет указатель на предыдущий. Узел содержит все данные, которые вы хотите сохранить. Пример:
struct Node {
Node* next;
// other node data here
};
Чтобы создать связанный список, вы первый начать с одного узла и установить next = nullptr; // 0
. Чтобы добавить другой узел, просто создайте новый и измените указатель первого. Пример:
Node* node1 = new Node();
node1 -> next = nullptr;
Node* node2 = new Node();
node2 -> next = nullptr;
node1 -> next = node2;
Вы начинаете видеть картину. Чтобы вставить спереди, просто создайте новый Node
и установите его next
на первый уже существующий узел. Чтобы вставить между двумя узлами, скажем node1
и node2
:
node1 -> next = newNode;
newNode -> next = node2;
Чтобы сделать хороший один обычно пишет класс-оболочку, содержащую такие функции, как
InsertNodeAt(Node* node, uint index);
Node* GetNodeAt(uint index);
RemoveNodeAt(uint index);
Поскольку у вас есть два различных типа объектов (Student
и Curse
), вы можете использовать шаблоны и избегать написания связанного класса списка для каждого типа.
Если вы хотите создать свой собственный список самостоятельно, я рекомендую сделать некоторые дополнительные исследования (google - ваш друг), поскольку я упомянул только несколько вещей.
Если вы не против использовать стандартную библиотеку C++, вам может быть интересно использовать уже подготовленные связанные классы списка std::forward_list
(стандартный связанный список) и std::list
(двойной список).
Вы можете сообщить об ошибке? – Shaggy
'' CS "' недействительный индекс для массива. Используйте std :: map/std :: unordered_map, если вы хотите индексировать также строки – Borgleader
, 'student' является указателем' Student', поэтому присвоение 'Course *' не будет работать. – dwcanillas