c语言怎么实现单链表反转

   2025-02-13 3660
核心提示:要实现单链表的反转,可以按照以下步骤进行:定义一个指针变量current,指向链表的头节点。定义两个指针变量prev和next,分别表

要实现单链表的反转,可以按照以下步骤进行:

定义一个指针变量current,指向链表的头节点。定义两个指针变量prev和next,分别表示当前节点的前一个节点和后一个节点。遍历链表,每次迭代时,先将next指针指向current节点的下一个节点,然后将current节点的next指针指向prev节点,完成反转。最后将prev指针指向current节点,current指针指向next节点。重复步骤3,直到current指针指向空节点,即链表遍历完成。修改链表的头节点指针,使其指向prev节点,完成链表的反转。

下面是使用C语言实现单链表反转的代码示例:

#include <stdio.h>#include <stdlib.h>// 定义链表节点结构体typedef struct Node {    int data;    struct Node* next;} Node;// 定义链表反转函数void reverseList(Node** head) {    Node* current = *head;    Node* prev = NULL;    Node* next = NULL;        while (current != NULL) {        next = current->next;        current->next = prev;        prev = current;        current = next;    }        *head = prev;}// 定义链表打印函数void printList(Node* head) {    Node* current = head;        while (current != NULL) {        printf("%d ", current->data);        current = current->next;    }    printf("\n");}int main() {    // 创建链表    Node* head = (Node*)malloc(sizeof(Node));    head->data = 1;        Node* node2 = (Node*)malloc(sizeof(Node));    node2->data = 2;        Node* node3 = (Node*)malloc(sizeof(Node));    node3->data = 3;        Node* node4 = (Node*)malloc(sizeof(Node));    node4->data = 4;        head->next = node2;    node2->next = node3;    node3->next = node4;    node4->next = NULL;        // 打印原始链表    printf("原始链表:");    printList(head);        // 反转链表    reverseList(&head);        // 打印反转后的链表    printf("反转后的链表:");    printList(head);        // 释放链表内存    Node* current = head;    Node* next;    while (current != NULL) {        next = current->next;        free(current);        current = next;    }        return 0;}

运行以上代码,输出结果为:

原始链表:1 2 3 4 反转后的链表:4 3 2 1

可以看到,通过反转链表函数reverseList,原始链表中的元素顺序被逆转了。

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