7.下面的算法是将双链表L就地逆转,即:逆转在原链表上进行,不允许重新构造链表。请将算法补充完整。(16分) void ReserveDL(DLinkList *&L) { DLinkList *p, *r; p=L->next; (1) while ( (2) ) { r=p->next; p->next=L->next; if (L->next!=NULL) (3) ; p->prior=L; L->next=p; (4) ; } }
时间: 2024-03-07 16:52:24 浏览: 25
void ReserveDL(DLinkList *&L)
{
DLinkList *p, *r;
p = L->next;
L->next = NULL; //(1)将原链表断开,以便重新连接
while (p != NULL) //(2)循环条件是p不为NULL
{
r = p->next; //(3)保存下一个节点,以便后续操作
p->next = L->next;
if (L->next != NULL)
{
L->next->prior = p;
}
L->next = p;
p->prior = L; //(4)连接已经逆转的部分和当前节点
p = r; //继续下一个节点的操作
}
}
相关问题
设计算法将带头结点的双循环链表L就地逆置,即利用原表各结点的空间实现逆置。
算法步骤如下:
1. 如果链表L为空或只有一个结点,则直接返回。
2. 定义三个指针prev、p和next,分别指向原链表中相邻的三个结点。
3. 将prev指针指向L的头结点,p指针指向头结点的下一个结点。
4. 进入循环,判断p是否指向头结点。如果是,则退出循环;否则执行以下步骤:
1. 将next指针指向p的下一个结点。
2. 将p的next指针指向prev。
3. 将prev指针指向p。
4. 将p指针指向next。
5. 将头结点的next指针指向prev,完成链表逆置。
具体实现代码如下:
```c
void ReverseList(DLinkList L) {
if (L == NULL || L->next == L) {
return;
}
DLinkList prev = L, p = L->next, next;
while (p != L) {
next = p->next;
p->next = prev;
prev = p;
p = next;
}
L->next = prev;
prev->prior = L;
}
```
使用c++设计算法将带头结点的双循环链表L就地逆置,即利用原表各结点的空间实现逆置
可以使用以下算法将带头结点的双循环链表L就地逆置:
1. 定义三个指针p、q、r,分别指向头结点、第一个结点和第二个结点。
2. 将p指向第一个结点,q指向第二个结点,r指向第三个结点。
3. 依次将q的next指针指向p,p的prior指针指向q,p指向q,q指向r,r指向r的next结点。
4. 重复步骤3,直到r指向头结点为止。
以下是实现代码:
void ReverseList(DLinkList L) {
if (L == NULL || L->next == L) {
return;
}
DLinkList p = L->next;
DLinkList q = p->next;
DLinkList r = q->next;
while (q != L) {
q->next = p;
p->prior = q;
p = q;
q = r;
r = r->next;
}
q->next = p;
p->prior = q;
}
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)