双循环链表的逆置

nodetype *invert(nodetype *head)
{
 nodetype *p=head,*q,*s;
 if(p!=NULL)
 {
  q=p->next;
  head->next=head->left;/////逆置头结点
  head->left=p->next;
  while(q!=head)
  {
   s=q->next;
   q->left=q->next;
   q->next=p;
   p=q;
   q=s;
  }
 }
 return head;
}

 

因为每一个节点都有左右指针,所以要逆置的话,只要从头结点开始,让每一个节点的左指针指向右节点,右指针指向左节点就可以了。但是需要强调的一点是,在创建双循环链表的时候,注意对头指针的处理,头指针也是有左右指针域的,如果一直都忘了头指针要指向最后一个节点的话,交换指针之后,就打印不出来啦!


你可能感兴趣的:(逆置,双循环链表)