C语言单链表反转详解:步骤、代码和示例
"C语言,单链表反转的核心是遍历链表,修改指针的指向。\n\n具体步骤如下:\n1. 定义三个指针:prev指向前一个节点,curr指向当前节点,next指向当前节点的下一个节点。\n2. 将prev指针初始化为NULL,curr指针初始化为链表的头节点。\n3. 遍历链表,重复执行以下操作:\n - 将next指针指向curr节点的下一个节点。\n - 将curr节点的next指针指向prev节点。\n - 将prev指针指向curr节点。\n - 将curr指针指向next节点。\n4. 遍历结束后,将链表的头节点指向prev节点,即反转后的链表头。\n\n示例代码如下:\n\nc\n#include <stdio.h>\n\n// 定义单链表节点结构体\ntypedef struct Node {\n int data;\n struct Node* next;\n} Node;\n\n// 反转单链表函数\nNode* reverseList(Node* head) {\n Node* prev = NULL;\n Node* curr = head;\n Node* next = NULL;\n\n while (curr != NULL) {\n next = curr->next;\n curr->next = prev;\n prev = curr;\n curr = next;\n }\n\n return prev;\n}\n\n// 打印链表函数\nvoid printList(Node* head) {\n Node* curr = head;\n while (curr != NULL) {\n printf("%d ", curr->data);\n curr = curr->next;\n }\n printf("\n");\n}\n\nint main() {\n // 创建一个示例链表:1->2->3->4->5\n Node* head = (Node*)malloc(sizeof(Node));\n Node* node2 = (Node*)malloc(sizeof(Node));\n Node* node3 = (Node*)malloc(sizeof(Node));\n Node* node4 = (Node*)malloc(sizeof(Node));\n Node* node5 = (Node*)malloc(sizeof(Node));\n\n head->data = 1;\n head->next = node2;\n node2->data = 2;\n node2->next = node3;\n node3->data = 3;\n node3->next = node4;\n node4->data = 4;\n node4->next = node5;\n node5->data = 5;\n node5->next = NULL;\n\n printf("原始链表:");\n printList(head);\n\n head = reverseList(head);\n\n printf("反转后的链表:");\n printList(head);\n\n return 0;\n}\n\n\n输出结果:\n\n原始链表:1 2 3 4 5 \n反转后的链表:5 4 3 2 1 \n\n
原文地址: https://www.cveoy.top/t/topic/qzu7 著作权归作者所有。请勿转载和采集!