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

溫馨提示×

C語言反轉列表的方法是什么

小億
95
2023-10-26 20:14:31
欄目: 編程語言

在C語言中,可以通過指針操作來反轉一個鏈表。

首先,需要定義一個結構體表示鏈表的節點,結構體中包含存儲的值(可以是任何類型)和一個指向下一個節點的指針。

struct Node {
    int data;
    struct Node* next;
};

然后,可以編寫一個函數來反轉鏈表。該函數需要接收鏈表的頭節點作為參數,然后通過指針操作重新排列鏈表節點的順序。

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

這個函數使用了三個指針:prev用于保存當前節點的前一個節點,current用于保存當前節點,next用于保存當前節點的下一個節點。在循環中,首先將next指針指向當前節點的下一個節點,然后將當前節點的next指針指向前一個節點,接著將prev指針指向當前節點,將current指針指向next節點。最后,將頭節點指向反轉后的鏈表的最后一個節點。

以下是一個使用反轉鏈表函數的例子:

int main() {
    struct Node* head = NULL;
    struct Node* second = NULL;
    struct Node* third = NULL;

    // 創建鏈表
    head = (struct Node*)malloc(sizeof(struct Node));
    second = (struct Node*)malloc(sizeof(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;

    // 反轉鏈表
    head = reverseList(head);

    // 打印反轉后的鏈表
    struct Node* current = head;
    while (current != NULL) {
        printf("%d ", current->data);
        current = current->next;
    }

    return 0;
}

輸出結果為:3 2 1,表示鏈表已成功反轉。

0
沂水县| 新建县| 金寨县| 青浦区| 泰兴市| 和顺县| 宁武县| 怀安县| 罗甸县| 鄄城县| 体育| 蕉岭县| 南康市| 奈曼旗| 清水县| 闽清县| 海南省| 和硕县| 常山县| 宁乡县| 德江县| 洪雅县| 玉门市| 溧阳市| 鹿邑县| 郁南县| 洞口县| 芦山县| 巴南区| 嘉禾县| 绩溪县| 准格尔旗| 军事| 镇原县| 德江县| 义马市| 永城市| 台南县| 新龙县| 新沂市| 贵阳市|