数据结构中有这么一句定义结点Node<DataType> *next; 尖括号里的DataType是什么意思啊!

 我来答
lyhdez1
推荐于2017-09-17 · TA获得超过1942个赞
知道小有建树答主
回答量:687
采纳率:100%
帮助的人:845万
展开全部

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 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式