From 7304fbee9a2fc6f476505c7b666849e7217b5a9c Mon Sep 17 00:00:00 2001 From: p68710245 Date: Sat, 23 Mar 2024 13:40:37 +0800 Subject: [PATCH] Add Node.hpp --- Node.hpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Node.hpp diff --git a/Node.hpp b/Node.hpp new file mode 100644 index 0000000..29d73eb --- /dev/null +++ b/Node.hpp @@ -0,0 +1,40 @@ +#ifndef NODE_HPP +#define NODE_HPP + +template +class List; // 友元类的前置声明 + +template +class Node +{ + T info; // 数据域 + Node *link; // 指针域,注意结点类格式,类模板实例化为类 +public: + Node() : link{nullptr} {} // 默认构造函数,用于构建头节点 + Node(const T &data) + : info{data}, link{nullptr} {} // 生成一般结点的构造函数 + Node(const Node &) = delete; + Node &operator=(const Node &) = delete; + void InsertAfter(Node *p) // 在当前结点后插入一个结点 + { + p->link = link; + link = p; + } + Node *RemoveAfter() // 删除当前结点的后继结点并返回其地址 + { + if (link) // 判断节点后是否有节点 + { + Node *tempP{link}; // 获取后继节点 + link = tempP->link; + return tempP; + } + return nullptr; + } + void print() + { + std::cout << info << '\t'; // 需要info支持插入运算符重载 + } + friend class List; // 以List为友元类 +}; + +#endif \ No newline at end of file