欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 反转链表【力扣】

反转链表【力扣】

2025/7/8 5:15:08 来源:https://blog.csdn.net/XiaoBino_O/article/details/147069835  浏览:    关键词:反转链表【力扣】

反转链表

  • 反转链表链接
      • 代码即解析
  • 结构体(链表定义)
  • 为什么需要这样的结构?
  • 为什么需要 cur 而不是直接用 head?

反转链表链接

代码即解析

#include <iostream>// 定义链表节点结构
struct ListNode {       // 定义名为 ListNode 的结构体(链表节点)int val;            // 节点存储的值(比如整数)ListNode* next;     // 指向下一个节点的指针ListNode(int x) : val(x), next(nullptr) {}  // 构造函数
};// 反转链表函数(头插法)
ListNode* reverseList(ListNode* head) {ListNode* rphead = nullptr; // 新链表的头节点ListNode* cur = head;       // 当前遍历节点while (cur != nullptr) {ListNode* nextNode = cur->next; // 保存下一个节点防止断链cur->next = rphead;  // 将当前节点的next指向新链表的头rphead = cur;        // 更新新链表的头为当前节点cur = nextNode;      // 移动到原链表的下一个节点}return rphead; // 返回反转后的头节点
}// 打印链表
void printList(ListNode* head) {ListNode* cur = head;while (cur != nullptr) {std::cout << cur->val << " ";cur = cur->next;}std::cout << std::endl;
}// 释放链表内存(防止内存泄漏)
void deleteList(ListNode* head) {while (head != nullptr) {ListNode* temp = head;head = head->next;delete temp;}
}int main() {// 创建链表 1->2->3->4ListNode* head = new ListNode(1);head->next = new ListNode(2);head->next->next = new ListNode(3);head->next->next->next = new ListNode(4);// 打印原链表std::cout << "原链表: ";printList(head); // 输出 1 2 3 4// 反转链表ListNode* reversedHead = reverseList(head);// 打印反转后的链表std::cout << "反转后: ";printList(reversedHead); // 输出 4 3 2 1// 释放内存deleteList(reversedHead);return 0;
}

结构体(链表定义)

  1. 结构体是什么?
    作用:结构体是一种自定义的数据类型,可以把多个变量打包成一个整体。
    类比:想象一个「快递包裹」,里面包含:
    物品内容(对应val,存储值)
    下一个包裹的地址(对应next,指向下一个节点)
  2. 构造函数 ListNode(int x)
    作用:创建节点时,快速初始化节点值val和指针next。
    分解解释:
ListNode(int x) : val(x), next(nullptr) {}
  • ListNode(int x):构造函数,接收一个整数x作为参数。
  • val(x):将参数x赋值给当前节点的val。
  • next(nullptr):将next指针初始化为nullptr(空指针)。

为什么需要这样的结构?

动态长度:链表可以按需扩展或缩短,无需预先分配固定内存。

高效增删:只需修改指针指向,即可在任意位置插入或删除节点。

为什么需要 cur 而不是直接用 head?

避免丢失头节点

链表特性:链表的访问必须从头节点开始。如果直接用 head 遍历链表,遍历结束后 head 会指向链表末尾(nullptr),导致无法再次访问链表。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词