(a)原始链表
(b) 反转后的双向链表
下面是一个用于反转双向链表的简单方法。所需要做的事情就是交换每个节点的前向指针和后向指针,然后调整链表的头指针和尾指针。
#include
struct Node
{
int data;
Node *next; // 指向下一个节点
Node *prev; // 指向前一个节点
};
//对链表进行反转
void reverse(Node **head)
{
Node *temp = NULL;
Node *current = *head;
//交换每个节点的后向指针和前向指针
// 1-->2-->3, 假设2为current.
while (current != NULL)
{
temp = current->prev; //temp=1
current->prev = current->next; //3-->2