![](/img/trans.png)
[英]How to implement a doubly linked list that accommodates integers and void pointers?
[英]Is it possible to create a linked list that can hold pointers instead of integers or string?
我是编程新手,但对链表有疑问。 我正在创建一个双向链接列表,我希望节点存储的指针不只是字符串或整数。 这样的代码会工作吗?
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是我的链表的功能。
也许这不是执行此操作的最佳方法,但是我可以执行此操作吗?
链表是一种数据结构,定义了多个数据项之间的某种关系。
如您所述,该数据通常是字符串或整数。 但这可以是任何东西。
您可以将链接列表视为书架。 您通常将书放在书架上。 但是,您也可以将鞋子放在那里,鞋子将以与书本相同的方式坐在书架上。
是的,您可以保留指向其他对象的指针。 在您的情况下,一个人反对。
您需要一个新的类或结构,然后创建一个指向它的指针。
class LinkedList
{
private:
struct Node {
Person *person;
Node *next;
};
Node* head = NULL;
Node* tail = NULL;
};
或者,您可以使用无效指针的链接列表
class LinkedList
{
private:
struct Node {
void *data;
Node *next;
};
Node* head = NULL;
Node* tail = NULL;
};
使用模板化的类型,您可以确保内容都是相同的类型。
template <typename T>
class LinkedList
{
private:
struct Node {
T *data;
Node *next;
};
Node* head = NULL;
Node* tail = NULL;
};
我目前无法使用C ++编译器,因此语法可能需要更正。
顺便说一句,使用尾部成员似乎意味着您正在尝试使用双向链表。 如果您不需要在列表中倒退,则没有必要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.