逆置链表是指将一个链表中的元素顺序颠倒过来,下面是一个详细的步骤,使用C语言实现逆置链表:,1、定义链表节点结构体:,2、创建一个新的空链表头节点:,3、遍历原链表,将每个节点插入到新链表的头部:,4、完整代码示例:,
,struct ListNode { int val; // 节点的值 struct ListNode *next; // 指向下一个节点的指针 };,struct ListNode* reverseList(struct ListNode* head) { // 创建一个新的空链表头节点 struct ListNode* newHead = NULL; // … },struct ListNode* reverseList(struct ListNode* head) { // 创建一个新的空链表头节点 struct ListNode* newHead = NULL; // 遍历原链表,将每个节点插入到新链表的头部 while (head != NULL) { // 保存当前节点的下一个节点指针 struct ListNode* next = head>next; // 将当前节点插入到新链表的头部 head>next = newHead; // 更新新链表头节点为当前节点 newHead = head; // 移动到下一个节点 head = next; } // 返回新链表的头节点 return newHead; },#include <stdio.h> #include <stdlib.h> struct ListNode { int val; // 节点的值 struct ListNode *next; // 指向下一个节点的指针 }; // 创建新的节点并初始化值和指针域为NULL struct ListNode* createNode(int val) { struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode)); newNode>val = val; newNode>next = NULL; return newNode; } // 逆置链表函数实现 struct ListNode* reverseList(struct ListNode* head) { // 创建一个新的空链表头节点 struct ListNode* newHead = NULL; // 遍历原链表,将每个节点插入到新链表的头部 while (head != NULL) { // 保存当前节点的下一个节点指针 struct ListNode* next = head>next; // 将当前节点插入到新链表的头部 head>next = newHead; // 更新新链表头节点为当前节点 newHead = head; // 移动到下一个节点 head = next; } // 返回新链表的头节点 return newHead; } // 打印链表函数实现(用于测试) void printList(struct ListNode* head) { struct ListNode* current = head; while (current != NULL) { printf(“%d “, current>val); // 打印当前节点的值 current = current>next; // 移动到下一个节点 } printf(” “); // 换行符,使输出更清晰可读 } int main() { // 创建一个包含5个节点的链表:1 > 2 > 3 > 4 > 5 > NULL struct ListNode* head = createNode(1); // 创建头节点并赋值为1,指针域为NULL(初始时) head>next = createNode(2); // 创建第二个节点并赋值为2,指针域指向头节点(初始时) head>next>next = createNode(3); // 创建第三个节点并赋值为3,指针域指向第二个节点(初始时),
c语言怎么逆置链表
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《c语言怎么逆置链表》
文章链接:https://zhuji.vsping.com/471599.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
文章名称:《c语言怎么逆置链表》
文章链接:https://zhuji.vsping.com/471599.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。