02有一个双链表L,设计一个算法查找第一个值为x的节点,将其与后继结点进行交换
先找到第一个值为x的节点p,q指向其后继节点,如下图所示,本题时将节点p移到节点q之后,实现过程时先删除节点p,再将其插入节点q之后算法如下://有一个双链表L,设计一个算法查找第一个值为x的节点,将其与后继结点进行交换intswap(D_LinkList&L,ElemTypex){DNode*p=L.next,*q;while(p!=NULL&&p->data!=x)//遍历节点p=p->next;if(p==NULL)//未找到值未x的节点return0;else//找到值为x的节点p{q=p->next;//q指向p的后继if(q!=NULL)//节点p不是尾节点{p->prior->next=q;//删除pq->prior=p->prior;p->next=q->next;//将节点p插入q节点之后if(q->next!=NULL)q->next->prior=p;q->next=p;p->prior=q;return1;}else//节点p是尾节点,无法与后继节点交换return0;}}
来自:链表-双向链表