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

溫馨提示×

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
黔江区| 包头市| 绩溪县| 石景山区| 南宫市| 漳平市| 吴江市| 奉贤区| 霞浦县| 鹿泉市| 墨竹工卡县| 萨嘎县| 额尔古纳市| 鄂托克前旗| 萨迦县| 渭南市| 诏安县| 仁布县| 安图县| 成武县| 馆陶县| 西峡县| 勐海县| 清徐县| 汪清县| 科技| 赤峰市| 镇宁| 湟源县| 楚雄市| 甘孜县| 九龙坡区| 宁远县| 南昌市| 固阳县| 青海省| 郴州市| 宝应县| 宝坻区| 衡山县| 泸定县|