数据结构中有这么一句定义结点Node<DataType> *next; 尖括号里的DataType是什么意思啊!
1个回答
展开全部
Node是类模板,DataType 是自定义的类型或者类型别名,直观起见,我给了一个实例,作为参考。
typedef int DataType;
template<class T>
class Node
{
public:
T data;
...
};
int main (void) {
Node<DataType> node; // DataType 是 int 型,这样类 Node 的成员 data 就是 int 型
...
}
追问
template ;
struct Node
{
Datatype date;
Node *next;
};
那如果是这样定义,Node *next;中的DataType起到什么作用呢?
追答
之前说 Node 是一个类模板,这个不准确,应该是一个自定义类型的模板(可以是类,也可以是结构体)。
定义模板的目的是节约代码量,比如如下的代码:
template<typename DataType> // typename 和 class 可以互换
// DataType 是一个自定义的类型名,可以随意指定。
struct Node
{
Datatype date;
Node<DataType> *next; // DataType 就是传递类型参数的意思
};
如果想将 date 指定为整型/浮点型,则将 DataType 指定为 int/float 即可
Node<int> node;
Node<float> node;
Node<int> 和 Node<float> 其实是两个结构体:
struct Node1
{
int date;
Node1 *next;
};
struct Node2
{
float date;
Node2 *next;
};
这样定义明显不如使用模板来的简单,只要定义一个模板,直接替换 DataType 就可以定义两个结构体了,显然会节省代码。另外 DateType 可以指定为任意的类型。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询