91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c語言單向鏈表怎么反轉

小億
86
2024-01-27 18:23:26
欄目: 編程語言

要反轉一個單向鏈表,可以使用三個指針分別指向當前節點、前一個節點和后一個節點。然后,通過修改指針的指向來實現鏈表的反轉。

具體步驟如下:

  1. 初始化三個指針:當前節點指針cur指向鏈表的頭節點,前一個節點指針prev為NULL,后一個節點指針next為NULL。
  2. 遍歷鏈表,直到當前節點指針cur為NULL。
  3. 在遍歷過程中,先將后一個節點指針next指向當前節點cur的下一個節點。
  4. 然后將當前節點指針cur的下一個節點指向前一個節點prev。
  5. 然后將前一個節點指針prev指向當前節點指針cur。
  6. 最后將當前節點指針cur指向后一個節點指針next。
  7. 重復步驟2-6,直到遍歷完整個鏈表。
  8. 最后,將鏈表的頭節點指針指向前一個節點指針prev,即可完成鏈表的反轉。

下面是一個示例代碼實現:

#include<stdio.h>
#include<stdlib.h>

// 定義鏈表節點結構體
struct Node {
    int data;
    struct Node* next;
};

// 反轉鏈表函數
struct Node* reverseLinkedList(struct Node* head) {
    struct Node* cur = head;
    struct Node* prev = NULL;
    struct Node* next = NULL;

    while (cur != NULL) {
        next = cur->next; // 暫存當前節點的下一個節點
        cur->next = prev; // 將當前節點的下一個節點指向前一個節點,實現翻轉
        prev = cur; // 前一個節點指針后移
        cur = next; // 當前節點指針后移
    }

    head = prev; // 將鏈表頭節點指向翻轉后的鏈表的頭節點

    return head;
}

// 打印鏈表函數
void printLinkedList(struct Node* head) {
    struct Node* cur = head;

    while (cur != NULL) {
        printf("%d ", cur->data);
        cur = cur->next;
    }

    printf("\n");
}

int main() {
    // 創建鏈表
    struct Node* head = (struct Node*)malloc(sizeof(struct Node));
    struct Node* second = (struct Node*)malloc(sizeof(struct Node));
    struct Node* third = (struct Node*)malloc(sizeof(struct Node));

    head->data = 1;
    head->next = second;

    second->data = 2;
    second->next = third;

    third->data = 3;
    third->next = NULL;

    printf("原始鏈表:");
    printLinkedList(head);

    // 反轉鏈表
    head = reverseLinkedList(head);

    printf("反轉后的鏈表:");
    printLinkedList(head);

    // 釋放內存
    free(head);
    free(second);
    free(third);

    return 0;
}

以上代碼創建了一個包含3個節點的鏈表,然后調用reverseLinkedList函數來反轉鏈表,并使用printLinkedList函數打印結果。最后釋放動態分配的內存。

輸出結果如下:

原始鏈表:1 2 3 
反轉后的鏈表:3 2 1 

0
达尔| 公主岭市| 额尔古纳市| 奉新县| 娄底市| 扎囊县| 娄烦县| 惠州市| 综艺| 通州区| 剑阁县| 霞浦县| 准格尔旗| 天门市| 五台县| 定州市| 荆门市| 墨脱县| 克什克腾旗| 平罗县| 铁岭县| 德阳市| 海原县| 石河子市| 兴城市| 桦川县| 滨州市| 威远县| 思南县| 柘城县| 晋江市| 侯马市| 甘德县| 南溪县| 台安县| 山阳县| 武城县| 务川| 温州市| 武功县| 黎城县|