struct Node
{
T data;
Node<T>* next;
};
template<class T>
class myList
{
private:
Node<T>* head;
int num;
public:
myList(){head = NULL; num = 0;}
~myList(){}
void insertNode(T elem)
{
num++;
Node<T>* p = head;
Node<T>* temp = new Node<T>;
temp->data = elem;
temp->next = NULL;
if(head == NULL)
{
head = temp; //此处若为 p = temp 则head一直为NULL
cout<<"one node inserted\n";
}
else
{
while(p->next != NULL) // p==NULL
{
cout<<"inserting...\n";
p = p->next;
}
p->next = temp; //p=temp;
}
}
};
上面的代码是一个链表的插入和打印,是没问题的。但如果把里面对应注释的那几行换成注释里面的代码,链表就错了,比如第一个会造成head一直为NULL。我有点凌乱了。所以想请问各位是什么原因导致这样的问题。谢谢大家。