算法描述
1.如果链表为空表,抛出异常
2.设置三个辅助变量p(指向链表的首元结点),q(指向p的后继结点,初值为null)
3.建立逆转之后的空表:First->next=Null
4.在原链表不空的情况下,重复做以下工作:
用q记录P的后继(原链表的新的头结点)
p.next=first->next; first->next=p //将p作为首元结点,链入逆转之后的表中
原链表的两个工作指针后移。
实现
template <class T>
void LinkList<T>::Reverse(){
Node <T> *p,*q;
p=first->next;
if(!p) throw "空链表!";
else{
first->next=NULL;
while(p){
q=p->next;
p->next=first->next;
first->next=p;
p=q;
}
}
}