已知p指向双向循环链表中的一个结点,其结点结构为data,prior,next三个域,写出算法chang(p),交换p所指向的结点及其前驱结点的顺序
时间: 2024-06-06 19:10:54 浏览: 183
算法如下:
1. 如果p为空或者p的前驱结点为空,则无法交换,直接返回。
2. 保存p的前驱结点pre,和p的后继结点next。
3. 如果pre的前驱结点为空,则说明p已经是链表的头结点,需要特殊处理。
4. 将pre的前驱结点的next指向p,将p的next指向pre的后继结点。
5. 如果next的后继结点为空,则说明p已经是链表的尾结点,需要特殊处理。
6. 将next的后继结点的prior指向pre,将pre的prior指向next。
7. 将p的prior指向pre的前驱结点,将pre的前驱结点的next指向p的前驱结点。
8. 返回交换完成后的链表头结点。
阅读全文