Я новичок в программировании, но у меня есть вопрос о связанных списках. Я создаю двойной связанный список, и я хочу, чтобы мои узлы хранили указатели, а не только строки или int. Будет ли код подобным образом работать?Возможно ли создать связанный список, который может содержать указатели вместо целых чисел или строки?
template <typename T>
class LinkedList
{
private:
struct Node {
string name;
int age;
int location;
Node* next;
Node* previous;
Node(T info){ name = info->getName(); age = info->getAge; location = info->getLocation; next = NULL; previous = NULL; }
};
Node* head = NULL;
Node* tail = NULL;
Это при условии, что (T данные) является указателем на объект класса, который был создан из:
#include "Person.h"
Person::Person(string name, int age, int location)
{
this->name = name;
this->age = age;
this->location = location;
}
Person::~Person()
{
}
string Person::getName()
{
return name;
}
int Person::getAge()
{
return age;
}
int Person::getLocation()
{
return location;
}
Я хочу, чтобы иметь возможность создать Person от моего лица класса, а затем хранения этого человека (имя, возраст и местоположение) в моем связанном списке:
Person* newPerson = new Person(name, age, location);
LL.insert(newPerson);
LL связанный список Я создал внутри моей main.cpp и вставки является функцией моего связного списка.
Возможно, это не лучший способ сделать это, но могу ли я это сделать?
Да. его ваш список .. вы получаете какую-либо ошибку? или это больше вопрос дизайна? – Nandu
Я рекомендую изучить STL. Есть ли причина, по которой вы хотите изобрести колесо? Посмотрите на «список», например, – Elyasin
Как уже упоминалось, просмотрите ['std :: list'] (http://en.cppreference.com/w/cpp/container/list), чтобы увидеть интерфейс для связанного, который работает с любым типом. Однако вы должны знать, что вам следует предпочесть ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector) поверх других контейнеров. В современных системах иерархия латентности памяти делает векторы более эффективными, чем списки. – legalize