中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C語言reverse鏈表操作怎么做

小樊
83
2024-06-24 09:35:27
欄目: 編程語言

要實現一個反轉鏈表的操作,可以按照以下步驟進行:

  1. 定義一個函數來實現鏈表的反轉操作,函數的輸入參數是鏈表的頭指針,并且函數的返回值也是鏈表的頭指針。

  2. 遍歷整個鏈表,將每一個節點的指針方向反轉,即將每個節點的next指針指向其前一個節點。

  3. 使用三個指針分別指向當前節點、前一個節點和下一個節點,通過循環不斷更新這三個指針的位置,直到遍歷完整個鏈表。

  4. 最后返回反轉后的鏈表的頭指針即可。

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

#include <stdio.h>

struct ListNode {
    int val;
    struct ListNode *next;
};

struct ListNode* reverseList(struct ListNode* head) {
    struct ListNode *prev = NULL;
    struct ListNode *current = head;
    struct ListNode *next = NULL;

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

    return prev;
}

int main() {
    // 構建一個簡單的鏈表 1 -> 2 -> 3 -> 4 -> 5
    struct ListNode *node1 = (struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode *node2 = (struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode *node3 = (struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode *node4 = (struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode *node5 = (struct ListNode*)malloc(sizeof(struct ListNode));

    node1->val = 1;
    node1->next = node2;
    node2->val = 2;
    node2->next = node3;
    node3->val = 3;
    node3->next = node4;
    node4->val = 4;
    node4->next = node5;
    node5->val = 5;
    node5->next = NULL;

    // 反轉鏈表
    struct ListNode *reversedHead = reverseList(node1);

    // 遍歷鏈表輸出反轉后的結果
    struct ListNode *current = reversedHead;
    while (current != NULL) {
        printf("%d ", current->val);
        current = current->next;
    }

    return 0;
}

在這個示例代碼中,我們構建了一個簡單的鏈表1 -> 2 -> 3 -> 4 -> 5,并調用reverseList函數對鏈表進行反轉操作,最后輸出反轉后的結果。

0
玛多县| 新干县| 神池县| 惠安县| 汝阳县| 栖霞市| 凌源市| 和田县| 从江县| 光泽县| 曲靖市| 营口市| 高陵县| 南宁市| 新源县| 通城县| 开江县| 宣化县| 嘉义市| 沾化县| 惠东县| 镇远县| 阿勒泰市| 张北县| 故城县| 新乡市| 南召县| 开平市| 莱芜市| 广宁县| 新昌县| 无为县| 河东区| 剑河县| 兰西县| 平塘县| 万载县| 临夏县| 无棣县| 定边县| 扎鲁特旗|