温馨提示×

c语言双向链表的反转方法是什么

小樊
84
2024-07-08 19:45:28
栏目: 编程语言

要反转一个双向链表,可以按照以下步骤进行:

  1. 创建三个指针变量prev、current和next,分别用于指向当前节点的前一个节点、当前节点和下一个节点。

  2. 初始化prev为NULL,current为链表的头节点。

  3. 遍历整个链表,每次更新prev、current和next指针的指向,直到current指向最后一个节点。

  4. 在遍历过程中,将current的next指针指向prev,将prev指针指向current,将next指针指向current的下一个节点。

  5. 更新prev、current和next指针,继续遍历链表。

  6. 当current指向最后一个节点时,将链表的头节点指向最后一个节点(即原链表的尾节点),并返回新的头节点。

以下是一个示例代码实现:

#include <stdio.h>

struct Node {
    int data;
    struct Node* prev;
    struct Node* next;
};

struct Node* reverseLinkedList(struct Node* head) {
    struct Node* current = head;
    struct Node* prev = NULL;
    struct Node* next = NULL;

    while (current != NULL) {
        next = current->next;
        current->next = prev;
        current->prev = next;
        prev = current;
        current = next;
    }

    head = prev;

    return head;
}

int main() {
    struct Node* head = NULL;
    // 初始化双向链表
    // ...

    head = reverseLinkedList(head);

    // 输出反转后的链表
    // ...

    return 0;
}

在代码中,reverseLinkedList函数用于反转双向链表,并返回反转后的链表头节点。在main函数中,你可以初始化双向链表并调用reverseLinkedList函数来反转链表。

0