溫馨提示×

c語言雙向鏈表的反轉方法是什么

小樊
149
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女