#include <iostream>
using namespace std;
template <class T>
class Node {
private:
Node<T>* next;
public:
T data;
Node() {data = 0; next = NULL;}
Node(const T& data, Node<T>* next = 0);
void insertAfter(Node<T>* p);
Node<T>* deleteAfter();
Node<T>* nextNode();
};
// 实现构造函数和其余3个功能函数
/********** Begin **********/
template <class T>
Node<T>::Node(const T& data, Node<T>* next) {
this->data = data;
this->next = next;
}
template <class T>
void Node<T>::insertAfter(Node<T>* p) {
p->next = this->next;
this->next = p;
}
template <class T>
Node<T>* Node<T>::deleteAfter() {
Node<T>* tempPtr = next;
if (next == NULL) {
return NULL;
}
next = tempPtr->next;
return tempPtr;
}
template <class T>
Node<T>* Node<T>::nextNode() {
return next;
}
/********** End **********/