You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
#ifndef NODE_HPP
|
|
#define NODE_HPP
|
|
|
|
template <typename T>
|
|
class List; // 友元类的前置声明
|
|
|
|
template <typename T>
|
|
class Node
|
|
{
|
|
T info; // 数据域
|
|
Node<T> *link; // 指针域,注意结点类格式,类模板实例化为类
|
|
public:
|
|
Node() : link{nullptr} {} // 默认构造函数,用于构建头节点
|
|
Node(const T &data)
|
|
: info{data}, link{nullptr} {} // 生成一般结点的构造函数
|
|
Node(const Node &) = delete;
|
|
Node &operator=(const Node &) = delete;
|
|
void insert_after(Node<T> *p) // 在当前结点后插入一个结点
|
|
{
|
|
p->link = link;
|
|
link = p;
|
|
}
|
|
Node<T> *remove_after() // 删除当前结点的后继结点并返回其地址
|
|
{
|
|
if (link) // 判断节点后是否有节点
|
|
{
|
|
Node<T> *tempP{link}; // 获取后继节点
|
|
link = tempP->link;
|
|
return tempP;
|
|
}
|
|
return nullptr;
|
|
}
|
|
void print()
|
|
{
|
|
std::cout << info << ' '; // 需要info支持插入运算符重载
|
|
}
|
|
T get_info()
|
|
{
|
|
return info;
|
|
}
|
|
friend class List<T>; // 以List为友元类
|
|
};
|
|
|
|
#endif |