亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
吴桥县| 高安市| 隆尧县| 息烽县| 新晃| 奉节县| 桂阳县| 贡觉县| 定南县| 客服| 三门峡市| 克东县| 原平市| 双桥区| 道真| 长岛县| 台中市| 东阿县| 大英县| 景宁| 朔州市| 卓资县| 岳西县| 博罗县| 张家界市| 聂拉木县| 房山区| 宣威市| 盐池县| 平凉市| 墨竹工卡县| 开阳县| 安溪县| 舒城县| 拜城县| 德昌县| 远安县| 文水县| 开平市| 珲春市| 娱乐|