循环单链表的就地逆置操作解决方法

循环单链表的就地逆置操作
循环单链表的就地逆置,使用rear(尾指针)指针操作

------解决方案--------------------
void ListInverse_L(LinkList &L){
//单链表的就地逆置
LNode *p,*q;
p=L->next;
while(p->next!=NULL)
{
q=p->next;
p->next=q->next;
q->next=L->next;
L->next=q;
}
 }
------解决方案--------------------
必须用尾指针?如果可以不用,试试上边那个吧
------解决方案--------------------
C/C++ code
struct link{
link *next;};

Order(link *L,link *rear)
{
  link *p;
  for(p=L,rear->next=NULL;rear->next!=L;rear=rear->next){
  while(p->next != rear) p = p->next;
  rear->next = p;}
}
link *A,*B;
A=...
B=A;
while(B->next!=A)B=B->next;
Order(A,B);