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

溫馨提示×

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
深水埗区| 齐河县| 罗田县| 榆中县| 西丰县| 阿拉善盟| 昌江| 儋州市| 霍邱县| 辰溪县| 松原市| 新兴县| 临清市| 陆川县| 民权县| 沙湾县| 肥西县| 秭归县| 冷水江市| 温泉县| 三门县| 宁陵县| 临湘市| 远安县| 张家界市| 内江市| 垦利县| 平原县| 泰宁县| 安吉县| 昌黎县| 沙河市| 封开县| 缙云县| 宁强县| 青浦区| 台南市| 莱州市| 宽城| 兖州市| 襄汾县|