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

溫馨提示×

c語言單鏈表反轉代碼怎么寫

小億
104
2023-10-26 20:24:41
欄目: 編程語言

以下是一個簡單的C語言單鏈表反轉代碼示例:

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

// 定義鏈表節點結構體
typedef struct Node {
    int data;
    struct Node* next;
} Node;

// 添加節點到鏈表尾部
void append(Node** head_ref, int new_data) {
    // 創建新節點
    Node* new_node = (Node*)malloc(sizeof(Node));
    new_node->data = new_data;
    new_node->next = NULL;

    // 如果鏈表為空,則將新節點設為頭節點
    if (*head_ref == NULL) {
        *head_ref = new_node;
        return;
    }

    // 找到鏈表的最后一個節點
    Node* last_node = *head_ref;
    while (last_node->next != NULL) {
        last_node = last_node->next;
    }

    // 將新節點連接到鏈表的最后
    last_node->next = new_node;
}

// 反轉鏈表
void reverse(Node** head_ref) {
    Node* prev_node = NULL;
    Node* current_node = *head_ref;
    Node* next_node = NULL;

    while (current_node != NULL) {
        // 保存下一個節點的指針
        next_node = current_node->next;

        // 反轉當前節點的指針
        current_node->next = prev_node;

        // 移動指針
        prev_node = current_node;
        current_node = next_node;
    }

    // 將頭節點指向反轉后的鏈表
    *head_ref = prev_node;
}

// 打印鏈表
void printList(Node* node) {
    while (node != NULL) {
        printf("%d ", node->data);
        node = node->next;
    }
    printf("\n");
}

int main() {
    Node* head = NULL;

    // 添加節點到鏈表
    append(&head, 1);
    append(&head, 2);
    append(&head, 3);
    append(&head, 4);

    // 打印原鏈表
    printf("Original list: ");
    printList(head);

    // 反轉鏈表
    reverse(&head);

    // 打印反轉后的鏈表
    printf("Reversed list: ");
    printList(head);

    return 0;
}

這段代碼首先定義了一個鏈表節點結構體 Node,包含一個整型數據和一個指向下一個節點的指針。然后,通過 append 函數將節點添加到鏈表的尾部。接著,通過 reverse 函數將鏈表反轉。最后,通過 printList 函數打印鏈表。在 main 函數中,創建鏈表并進行測試。

0
昌平区| 星子县| 富锦市| 六枝特区| 水富县| 凤凰县| 古丈县| 北碚区| 西峡县| 乌拉特后旗| 河北省| 彝良县| 来安县| 彭阳县| 临湘市| 股票| 廉江市| 莆田市| 大荔县| 双柏县| 霍林郭勒市| 浦县| 科尔| 穆棱市| 遂平县| 武隆县| 新和县| 呼图壁县| 兴和县| 广昌县| 昌图县| 安图县| 西青区| 德钦县| 胶州市| 句容市| 醴陵市| 公主岭市| 定州市| 桂平市| 垣曲县|