结点模板(用struct/class均可)
(1)struct型
template<class T> //class表明其后面的符号是一种数据类型(可用typename代替)
struct Node
{
T data;//数据域,类型为T
Node<T>* next=NULL;//后继,一个指向相同类型(Node<T>型)的指针//如Init->next是Init指向的结点的后继(也为指针)
};
注:
①C++中struct前无需加typedef即可直接声明变量,如建立头结点Node* Init=new Node;(类似class)
②Node<T>是一个模板结构体,表明指针next指向(未确定具体类型的)模板结构体Node;
若不加<T>,意味着next指向一类型已确定的结构体Node,将使代码从一个模板结构体变成一个普通的结构体
实例:
Node<int> Init;
此时,Node结构体Init中data成为整数类型,next是指向该Node类型的指针
(2)class型
template<class T>
class Node
{public:
T data;//数据域private:
Node<T>* next=NULL;
};
一般将data设为public,next设为private
注:后续定义要使用结点模板的类模板时需再写一次template< class T>