循环单链表的就地逆置操作解决方法
循环单链表的就地逆置操作
循环单链表的就地逆置,使用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;
}
}
------解决方案--------------------
必须用尾指针?如果可以不用,试试上边那个吧
------解决方案--------------------
循环单链表的就地逆置,使用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);