当前位置: 首页 > web >正文

剑指offer——链表:从尾到头打印链表

1、新写一个函数,递归调用这个函数

1、数组如果作为函数参数,需要取地址——如果不取地址,返回的数组为空

2、为什么结束条件是node为空,不是node的下一个为空

        如果node的下一个为空返回,就会略过node为尾的节点,直接递归回来了,把倒数第二个元素的值压入数组了

3、函数内的顺序为什么是先判断,再回调,再存值啊?

        先判断,先确定回调的边界,防止调用过多

        先回调,再存值,是因为先回调,保证先拿到节点,再存值,做成拿节点,存值,再拿前一个节点,再存值,保证是逆序的拿到节点

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:vector<int> printListFromTailToHead(ListNode* head) {ListNode* node=head;vector<int> ans;func(node,ans);return ans;}void func(ListNode* node,vector<int> &ans){if(node==nullptr)return;func(node->next,ans);ans.push_back(node->val);}
};

2、原地反转链表

是把pre和pre的next,也就是curr之间的指向反转嘛,然后再把curr变成next

翻转链表流程:先存要被断开的,后半段已经存储了,可以直接改变当前元素的指向了,指向前一个元素,把当前元素的值赋值给前一个(前一个元素右移一位),可以处理下一个节点了,下一个节点就是刚才存储过的那个元素,叫next,把它的值赋值给当前元素的值

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:vector<int> printListFromTailToHead(ListNode* head) {ListNode* pre=nullptr;ListNode* curr=head;ListNode* next=nullptr;while (curr!=nullptr) {//先存next=curr->next;//反转curr->next=pre;//移动pre=curr;//把存储的后半段的链表的头 赋值给当前的节点curr=next;}//把前一个元素赋值给当前元素curr=pre;vector<int> ans;while(curr!=nullptr){ans.push_back(curr->val);curr=curr->next;}return ans;}
};
http://www.xdnf.cn/news/15291.html

相关文章:

  • 上位机知识篇---SD卡U盘镜像
  • [论文阅读] 人工智能 + 软件工程 | LLM辅助软件开发:需求如何转化为代码?
  • 链表算法之【判断链表中是否有环】
  • 千辛万苦3面却倒在性格测试?这太离谱了吧!
  • 【C++】内联函数inline以及 C++入门(4)
  • 自动评论+AI 写作+定时发布,这款媒体工具让自媒体人躺赚流量
  • C++(STL源码刨析/List)
  • PyTorch中的torch.argmax()和torch.max()区别
  • 标准化模型格式ONNX介绍:打通AI模型从训练到部署的环节
  • 基于Springboot+UniApp+Ai实现模拟面试小工具二:后端项目搭建
  • 上位机知识篇---安装包架构
  • java集合类
  • 输入流挂起
  • 人脸图像生成(DCGAN)
  • Java线程进阶-并发编程
  • python的病例管理系统
  • halcon 求一个tuple的极值点
  • 性能狂飙 Gooxi 8卡5090服务器重新定义高密度算力
  • 深入剖析Spring Bean生命周期:从诞生到消亡的全过程
  • JavaSE——Object
  • Linux驱动基本概念(内核态、用户态、模块、加载、卸载、设备注册、字符设备)
  • DSSA(Domain-Specific Software Architecture)特定领域架构
  • 台球 PCOL:极致物理还原的网页斯诺克引擎(附源码深度解析)
  • Leaflet面试题及答案(21-40)
  • 2025年体育科学与健康大数据国际会议(ICSSHBD 2025)
  • OpenAI 将推 AI Agent 浏览器:挑战 Chrome,重塑上网方式
  • 异构Active DataGuard对于convert参数的错误理解
  • SpringCloud之Feign
  • 从「小公司人事」到「HRBP」:选对工具,比转岗更能解决成长焦虑
  • 十二、k8s工程化管理Helm