链表节点类中的链接数

ros*_*b83 0 c++ pointers linked-list

为链表创建节点时,它可能如下所示:

template <class T>
class node {
 T data;
 node* next;
}
Run Code Online (Sandbox Code Playgroud)

对于双向链表,它可能看起来像这样:

template <class T>
class node {
 T data;
 node* next;
 node* prev;
}
Run Code Online (Sandbox Code Playgroud)

对于BST,它可能看起来像这样:

template <class T>
class node {
 T data;
 node* left_child;
 node* right_child;
}
Run Code Online (Sandbox Code Playgroud)

这可以按以下格式推广:

template <class T>
class node {
 T data;
 node* links[N]; // N = 1 for linked list, N = 2 for tree or doubly linked list, etc...
}
Run Code Online (Sandbox Code Playgroud)

在不使用STL向量的情况下在类ctor中指定N的最佳方法是什么?

Luc*_*ore 6

怎么样

template <class T, int N>
class node {
 T data;
 node* links[N];
};
Run Code Online (Sandbox Code Playgroud)

并将其用作:

node<int, 2> doubleLinkedListNode;
node<int, 1> singleLinkedListNode;
Run Code Online (Sandbox Code Playgroud)

然而,我觉得它太复杂了,应该像原来那样保持它.更清洁.