c语言单链表反转代码怎么写

   2025-02-15 4620
核心提示:以下是一个简单的C语言单链表反转代码示例:#include stdio.h#include stdlib.h// 定义链表节点结构体typedef struct Node {int

以下是一个简单的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 函数中,创建链表并进行测试。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言