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

溫馨提示×

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
密云县| 琼海市| 佳木斯市| 民和| 嘉峪关市| 神木县| 山阳县| 五家渠市| 屏东县| 西宁市| 民县| 微博| 荔浦县| 上高县| 镇宁| 邻水| 高陵县| 镇平县| 张家川| 肃宁县| 揭阳市| 稻城县| 河北区| 宁都县| 元阳县| 大厂| 肇源县| 梁平县| 潼关县| 固原市| 图片| 靖州| 通辽市| 长治市| 新竹县| 西宁市| 理塘县| 枞阳县| 普陀区| 庆城县| 永春县|