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

溫馨提示×

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
沙洋县| 获嘉县| 施甸县| 合肥市| 毕节市| 温泉县| 舒城县| 平度市| 淳化县| 克拉玛依市| 清涧县| 封丘县| 阜新| 高平市| 江城| 新干县| 台东市| 喀喇| 社旗县| 方山县| 临安市| 崇阳县| 延吉市| 木兰县| 岳阳市| 绵阳市| 景德镇市| 北流市| 灵川县| 那坡县| 道孚县| 林州市| 阿鲁科尔沁旗| 景宁| 谷城县| 马鞍山市| 郎溪县| 徐水县| 敖汉旗| 西畴县| 贺州市|