使用配对模板实现列表模板

Implementing a List template using a Pair template

本文关键字:列表 实现      更新时间:2023-10-16

我正在尝试使用自己的对类实现单个链接的列表模板类。我正在这样做是为了刷新我的C 技能,所以这就是为什么我不只是使用STL。

我的列表模板由单一类型进行了参数:

template <typename T>
class LinkedList
{
private:
    Pair<T, Pair<???>* >* _head;
};

问题是我希望_head是一对,其第二个元素是同一类型的一对。这个想法是_head.first是元素,_head.second是指向列表其余部分或null的指针,如果是最后一个元素。

有没有一种方法来使用引用自身的模板类型?

也许您试图做这样的事情:

template <typename T>
class LinkedList
{
private:
    Pair<T, ListList<T> >* _head;
};

典型单链接列表由 nodes 组成,每个节点都包含一个指向下一个节点的指针或一个空指针来发出信号:

template <typename T> List
{
    struct Node
    {
        Node * next;
        T value;
    };
    Node * head;
    List() : head(NULL) { }
    // ... insert, delete, find, iterate ...
}