【发布时间】:2015-10-28 02:04:01
【问题描述】:
我是编程新手,但我对链表有疑问。我正在创建一个双链表,我希望我的节点存储指针而不仅仅是字符串或整数。这样的代码可以工作吗?
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 info) 是一个指向已从以下位置创建的类对象的指针:
#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* newPerson = new Person(name, age, location);
LL.insert(newPerson);
LL 是我在 main.cpp 中创建的一个链表,而 insert 是我的链表的一个函数。
也许这不是最好的方法,但我可以这样做吗?
【问题讨论】:
-
是的。它是你的清单……你有什么错误吗?还是这更像是一个设计问题?
-
我建议学习使用 STL。你有理由要重新发明轮子吗?以
list为例 -
如前所述,查看
std::list以查看适用于任何类型的链表容器的接口。但是,您应该知道您应该更喜欢std::vector而不是其他容器。在现代系统中,内存延迟层次结构使向量比列表更有效。
标签: c++ pointers inheritance linked-list