//////////////////////////////////////////////////////
#ifndef NODE_CLASS
#define NODE_CLASS
//define class Node
template <class T>
class Node
{
public:
Node(const T& item , Node<T> *prtNext = NULL);
void InsertAfter(Node<T> *p);//在本节点后插入同一类型的节点P;
void DeleteAfter(); //删除当前节点的后继节点
T GetData();
Node<T> *GetNext();
Node<T> *NextNode() const;//获取后继节点的地址
void DisplayNode();
private:
T data;
Node<T> *next;
//T data;
};
template <class T>
Node<T>::Node(const T& item, Node<T> *prtnext = NULL)
:data(item),next(prtnext)
{
//const T& item//常引用所引用的对象不能被更新
}
template <class T>
void Node<T>::InsertAfter(Node<T> *p)
{
p->next = next;
next = p;
}
//delete the current node
template <class T>
void Node<T>::DeleteAfter()//
{
Node<T> *tempPtr = next;
next = tempPtr->next;
//delete tempPtr; 多余?
}
template <class T>
T Node<T>::GetData()
{
return data;
}
template <class T>
Node<T> *Node<T>::GetNext()
{
return Next;
}
template <class T>
Node<T> *Node<T>::NextNode() const
{
return next;
}
template <class T>
void Node<T>:: DisplayNode()
{
cout<<GetData()<<" ";
}
#endif;