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

溫馨提示×

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

小億
92
2023-12-01 22:39:14
欄目: 編程語言

C語言中單鏈表的反轉可以通過修改指針的指向來實現。具體的方法如下:

  1. 定義三個指針:prev、curr和next。初始時,prev指向NULL,curr指向鏈表的頭節點,next指向curr的下一個節點。

  2. 遍歷鏈表,直到curr指向NULL為止,循環執行以下操作: a. 將next指向curr的下一個節點,以便保留鏈表的連接關系。 b. 將curr的next指針指向prev,即將curr的指針方向反轉。 c. 將prev指向curr,以便保留反轉后的鏈表的頭節點。 d. 將curr指向next,以便繼續遍歷鏈表。

  3. 遍歷結束后,prev指向反轉后的鏈表的頭節點,即完成了鏈表的反轉。

以下是一個示例代碼:

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

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

struct ListNode* reverseList(struct ListNode* head) {
    struct ListNode *prev = NULL;
    struct ListNode *curr = head;
    
    while (curr != NULL) {
        struct ListNode *next = curr->next;
        curr->next = prev;
        prev = curr;
        curr = next;
    }
    
    return prev;
}

int main() {
    // 創建鏈表 1->2->3->4->5
    struct ListNode *head = (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));
    
    head->val = 1;
    head->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 *newHead = reverseList(head);
    
    // 遍歷打印反轉后的鏈表
    struct ListNode *current = newHead;
    while (current != NULL) {
        printf("%d ", current->val);
        current = current->next;
    }
    
    return 0;
}

運行以上代碼,輸出結果為:5 4 3 2 1,即鏈表反轉成功。

0
石泉县| 睢宁县| 仙游县| 肇东市| 会昌县| 金华市| 辽宁省| 岱山县| 灌南县| 乌鲁木齐县| 黄浦区| 新和县| 北碚区| 托里县| 三穗县| 门头沟区| 淮滨县| 平舆县| 延吉市| 六安市| 奉化市| 通海县| 丰原市| 昌江| 类乌齐县| 册亨县| 滦平县| 阿克陶县| 石景山区| 民勤县| 进贤县| 乳山市| 金山区| 达日县| 阿图什市| 长宁县| 启东市| 甘谷县| 左贡县| 铜川市| 磴口县|