繁体   English   中英

是否可以创建一个可以容纳指针而不是整数或字符串的链表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM