编写算法逆置一个带头结点的双链表
时间: 2024-04-06 07:09:58 浏览: 93
建立一个带头节点的双向链表
算法如下:
1. 定义三个指针p、q、r,分别指向当前节点、前一个节点和后一个节点。
2. 初始化p指向头结点的下一个节点,q指向头结点,r指向p的下一个节点。
3. 将头结点的next指针置为NULL。
4. 依次遍历链表中的每个节点,将p的next指针指向q,将p的prev指针指向r。
5. 将q指针指向p,将p指针指向r,将r指针指向r的下一个节点。
6. 当r指针指向NULL时,遍历结束,将头结点的next指针指向q。
代码如下:
```c++
void reverseList(Node *head)
{
Node *p = head->next;
Node *q = head;
Node *r = p->next;
head->next = NULL;
while (r != NULL)
{
p->next = q;
p->prev = r;
q = p;
p = r;
r = r->next;
}
p->next = q;
p->prev = NULL;
head->next = p;
}
```
阅读全文