试写一个算法,对双链表进行就地逆置
(头插法)
void Reserve(DLinkNode *&L)
{
DLinkNode *p=NULL,*q;//
L->next=NULL;
while(p!=NULL)
{
q=p>next;//用q标记后继节点
if(L->next!=NULL)//这步发生是,表里一个数都没有,L指向空
L->next->prior=p;
L->next=p;
p->prior=L;
}
p=q;//,重新标记p,进行下一次循环
}
q=p>next;//用q标记后继节点,因为后面p>next会变,如果现在不标记,就找不到p的后继了,就断层了