数据结构 已知P指向双向循环链表中的一个结点,其结点结构为datapriornext三个域,写出算法change(p),交换 p所指向的结点和它的前缀结点的顺序。

Posted Aiden (winner)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构 已知P指向双向循环链表中的一个结点,其结点结构为datapriornext三个域,写出算法change(p),交换 p所指向的结点和它的前缀结点的顺序。相关的知识,希望对你有一定的参考价值。

分析:
知道双向循环链表的一个结点,与前驱交换涉及到四个结点(p结点、前驱结点、前驱结点的前驱结点,后继结点)六条链。

void Exchange(LinkedList p)
//p是双向循环链表中的一个结点,本算法将p所指结点与其前驱结点交换
	q=p->Llink;
	q->Llink->rlink=p;  //p的前驱的前驱之后继为p
	p->Llink->=q->Llink;//p的前驱指向其前驱的前驱
	q->rlink=p->rlink;  //p的前驱的后继为p的后继
	q->Llink=p;         //p与其前驱交换
	p->rlink->Llink=q;  //p的后继的前驱指向原p的前驱
	p->rlink=q;         //p的后继指向其原来的前驱
//算法exchange结束

以上是关于数据结构 已知P指向双向循环链表中的一个结点,其结点结构为datapriornext三个域,写出算法change(p),交换 p所指向的结点和它的前缀结点的顺序。的主要内容,如果未能解决你的问题,请参考以下文章

链表练习:单向循环链表变双向

双向循环链表

详解双向循环链表的实现及概念

双链表

双链表

JS数据结构第三篇---双向链表和循环链表