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

溫馨提示×

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
宣武区| 石城县| 九台市| 泽库县| 哈尔滨市| 垣曲县| 北京市| 乐业县| 邵东县| 阿拉善右旗| 浮山县| 丰台区| 樟树市| 图片| 东海县| 卓尼县| 绥化市| 永兴县| 温宿县| 北票市| 息烽县| 绿春县| 宝坻区| 博客| 拉孜县| 玉屏| 聂荣县| 洛浦县| 镇远县| 涪陵区| 德安县| 沈阳市| 元谋县| 许昌市| 呼和浩特市| 保亭| 柘城县| 山阴县| 钦州市| 无为县| 道孚县|