template<class T>
void List<T>::Reverse()
{
LinkNode<T> *current=this->first, * p;
int number;//用来获取头指针data存的链表数据长度
int k = 0;
int i = 0;
T Save ;
T Save2 ;
current = current->next;//将current指针指向第一个结点
p = this->first;//将指针指向第一个结点
number =this->first->data;
while (p!=NULL&& k<number )//将p指针指向最后一个结点
{
p = p->next;
k++;
}
while (k!=i)//前后链表一起遍历
{
Save = current->data;
Save2 = p->data;
current->data = Save2;
p->data = Save;
current = current->next;
i++; k--;
p = Locate(k);
}
}
出错点:
while(k!=i)这一个循环里面,前后遍历,data域交换时不可以直接 用current->data = p->data,不然会报错,而应该用一个变量将这两个data域内容存起来,然后再来转换.