链表错误 求大神指点
程序代码:
//节点类定义 #ifndef NODE_H_ #define NODE_H_ #include <iostream> #include <cstdlib> template<typename T> class LinkList; template<typename T> class Node { public: friend class LinkList<T>; public: T value; Node<T>* next; public: //Node(NULL):next(NULL){NULL;}; Node(){next=NULL;} Node(const T& T1){value=T1,next=NULL;}; T& GetValue(void){return value;} Node<T>* GetNext(){return next;} }; #endif //链表类定义 #include <iostream> #include "Node.h" using namespace std; template <typename T> class LinkList { private: Node<T>* p_Head; public: LinkList(void); ~LinkList(void); void clear(void); T& visit(size_t pos); void Insert(const size_t pos,const T& value); void add(const T& value); size_t getLengh(void) const; void remove(const size_t pos); size_t search(const T& value0) const; }; template <typename T> LinkList<T>::LinkList(void) { p_Head=new Node<T>(); } template <typename T> LinkList<T>::~LinkList(void) { clear(); delete p_Head; } template <typename T> void LinkList<T>::clear() { while(!p_Head->next) { p_Head=p_Head->next; delete p_Head->next; } } template <typename T> T& LinkList<T>::visit(size_t pos) { Node<T>* prev=p_Head; for(int i=0;i<pos+1&&prev!=NULL;i++) { prev=prev->next; } return prev->value; } template <typename T> void LinkList<T>::Insert(const size_t pos, const T &value) { Node<T>* prev=p_Head; Node<T>* newlist=new Node<T>(value); for(int j=0;j<pos&&prev!=NULL;j++) { prev=prev->next; } prev->next=newlist->next; newlist->next=prev->next->next; } template <typename T> void LinkList<T>::add(const T &value) { Node<T>* prev=p_Head; while(prev!=NULL) { prev=prev->next; } Node<T>* newlist=new Node<T>(value); newlist->next=prev->next; //出现错误的地方,不知道为什么 prev->next=newlist; } template <typename T> size_t LinkList<T>::getLengh() const { int i=0; Node<T>* prev=p_Head; while(prev->next!=NULL) { prev=prev->next; i++; } return i; } template <typename T> void LinkList<T>::remove(const size_t pos) { Node<T>* prev=p_Head; for(int i=0;i<pos&&prev!=NULL;i++) { prev=prev->next; } Node<T>* savelist=prev->next; prev->next=prev->next->next; delete savelist; } template <typename T> size_t LinkList<T>::search(const T &value0) const { Node<T>* prev=p_Head; int i=0; while(prev->value!=value0) { prev=prev->next; i++; } return i; } //主函数 #include "LinkList.h" #include <iostream> using namespace std; void main() { //cout<<"nihao"<<endl; int num=10; LinkList<int> link; link.add(1); link.add(2); link.add(3); link.add(5); link.add(100); cout<<link.getLengh()<<endl; } 错误在add函数里 已经标明错误之处