#include <iostream>
using namespace std;
template <class Type>
struct Node
{
Type data;
Node<Type>* next;
Node();
Node(Type data);
};
template <class Type>
Node<Type>::Node(){}
template <class Type>
Node<Type>::Node(Type data)//基于数据创建节点
{
this->data = data;
this->next = NULL;
}
template <class Type>
class LinkList
{
private:
Node<Type> head;
public:
int length=0;
LinkList(Node<Type> &node);
Node<Type>* nodeAt(int index);
int indexOf(Node<Type>* pNode);
bool setNode(Type data,Node<Type>* pNode);
bool insert(Type data,Node<Type>* pNode);
bool deletepNode(Node<Type>* pNode);//涉及到最后这三个函数
void Traverse(bool (*vist)(Node<Type>* node));//涉及到最后这三个函数
bool clear();//涉及到最后这三个函数
};
template <class Type>
bool LinkList<Type>::deletepNode(Node<Type>* pNode)
{
Node<Type>* tempPNode=head.next;
for (;tempPNode!=NULL;tempPNode = tempPNode->next)
{
if (tempPNode->next==pNode)
{
tempPNode->next = pNode->next;
delete pNode;
length--;
return true;
}
}
return false;
}
template<class Type>
void LinkList<Type>::Traverse(bool (*vist)(Node<Type>* node))
{
Node<Type> tempNode=head;
while (tempNode.next!=NULL)
{
vist(tempNode.next);
tempNode = *tempNode.next;
}
}
template <class Type>
bool LinkList<Type>::clear()
{
Traverse(deletepNode);
return true;
}
下面是报错信息