设计一个算法将带头结点的循环双链表L的所有结点逆置。
void Reverse(DLinkNode *&L){ DLinkNode *p=L->;next,*q; L->;next=L->;prior=L;//构造一个空的循环双链表 while (p!=L) {q=p->;next;p->;next=L->;next;//将p结点插入到表头L->;next->;prior=p;L->;next=p;p->;prior=L;p=q; }}
举一反三
- 【其它】编写算法,实现带头结点单链表的逆置算法
- 对线性表L=(a1...an) (1)如L为顺序表,请设计算法将L就地逆置。 (2)若L为带头结点的单链表,设计算法将L就地逆置
- 设计一个算法,求一个带头结点单链表中的结点个数。
- 写一算法,将带头结点的单链表置空,即删除其上所有结点,使单链表成为一个空表。/*提示:定义一个指向第一个结点的指针p;p=L->next;用循环来删除头结点后面的那个结点(其实就是改变指针方向,释放头结点后面的那个结点),循环的条件是L->next不空*/voidClearList(LinkListL)//L为带头结点的单链表的头指针{}
- 设计一个算法求一个循环单链表L中所有值为x的结点个数。
内容
- 0
设计一个算法,在带头结点的单链表L中删除所有的重复结点(对于多个重复结点,只保留第一个结点)。
- 1
有一个非空双链表L,设计一个算法在第i个结点之前插入一个值为x的结点。
- 2
试编写在带头结点的单链表L中删除(一个)最小值结点的(高效)算法。
- 3
【其它】设计将带表头的链表逆置算法
- 4
不带头结点的单链表L有100个结点,在L的第一个位置之前插入一个结点,需要移动____个结点。