从尾到头打印链表

信息卡片

  • 时间:2020-03-23
  • 题目:从尾到头打印链表
  • tag:list

题目描述

输入一个链表,按链表从尾到头的顺序返回一个 ArrayList。


01

调用 reverse 函数

解题思路

这是一种简单粗暴的解法。先遍历一遍链表,在遍历链表的同时将当前指针指向的值放入 vector 数组中,直到链表遍历完成。最后,使用 reverse 函数将 vector 数组进行反转。

public:vector<int> printListFromTailToHead(ListNode* head) {vector<int>ArrayList;if(!head || !head->next)return {};while(head){ArrayList.push_back(head->val);head=head->next;}reverse(ArrayList.begin(),ArrayList.end());return ArrayList;}
};

02

调用 insert 函数

解题思路

与解法一有些类似,依次从前往后遍历链表,在遍历链表的同时,调用 vector 的 insert 函数从头部插入此时链表指针指向的值。最后就得到了一个反转的数组。

class Solution {
public:vector<int> printListFromTailToHead(ListNode* head) {vector<int>ArrayList;if(head){ArrayList.insert(ArrayList.begin(),head->val);while(head->next){ArrayList.insert(ArrayList.begin(),head->next->val);head=head->next;}}return ArrayList;}
};

03

调用栈方法

解题思路

创建一个元素为指针类型的栈,来存放链表的指针。在遍历链表的同时将指针入栈,此时栈的底部是链表的第一个元素,栈顶是链表的最后一个元素。弹出栈的时候把指针指向的值放入 vector 数组里面。

class Solution {
public:vector<int> printListFromTailToHead(ListNode* head) {stack<ListNode*> stackNodes;vector<int> ArrayList;ListNode* p=head;while (p != NULL){stackNodes.push(p);p = p->next;}while (!stackNodes.empty()){p=stackNodes.top();ArrayList.push_back(p->val);stackNodes.pop();}return ArrayList;}
};

04

递归调用

解题思路

递归的本质就是一个栈结构,可以用递归来实现。要实现反过来输出的链表,我们每访问到一个节点的时候,先递归输出它后面的节点,再输出该节点自身,这样就得到反转的链表。

class Solution {
public:vector<int> printListFromTailToHead(struct ListNode* head) {vector<int> vec;printListFromTailToHead(head,vec);return vec;}void printListFromTailToHead(struct ListNode* head,vector<int> &vec)    {if(head!=nullptr){if(head->next!=nullptr){printListFromTailToHead(head->next,vec);}vec.push_back(head->val);}}
};

总结

解法四递归的方法看起来比较简洁,但是凡事都有利弊,当链表非常长的时候,就会导致函数调用的层级很深,从而有可能导致函数调用栈溢出。解法一、解法二、解法三要优于解法四。

链表怎么输出最后一个元素无空格_剑指offer系列----从尾到头打印链表相关推荐

  1. 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java

    <LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...

  2. 【LeetCode】剑指 Offer 06. 从尾到头打印链表

    [LeetCode]剑指 Offer 06. 从尾到头打印链表 文章目录 [LeetCode]剑指 Offer 06. 从尾到头打印链表 一.笨比解法 二.递归法 三.辅助栈法 总结 一.笨比解法 算 ...

  3. LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表

    剑指 Offer 06. 从尾到头打印链表 Ideas 遍历链表,每次在vector的头部insert当前元素值. Code C++ class Solution {public:vector< ...

  4. 【三种解法】剑指 Offer 06. 从尾到头打印链表【附完整可运行代码】

    立志用最少的代码做最高效的表达 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表 ...

  5. 剑指offer——6.从尾到头打印链表

    题目: 题:输入一个链表的头节点,从尾到头打印链表每个节点的值 知识点: 链表的基本知识,节点的2个属性(value.next): 栈的基本使用:创建空栈.pop.empty.push等:参考:htt ...

  6. 【剑指Offer】从尾到头打印链表

    剑指Offer 从尾到头打印链表 题目描述 解法1 实现代码 一点补充 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解法1 这道题主要思路是while循环从头遍历整个列 ...

  7. 剑指Offer #03 从尾到头打印链表(递归)

    题目来源:牛客网-剑指Offer专题 题目地址:从尾到头打印链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 题目解析 方法一: 因为题目要求返回的顺序是从尾到头,所以我 ...

  8. 剑指 Offer 06. 从尾到头打印链表(python3编写)

    目录 1.题目描述: 2.方法一:使用栈保存结果 思路: 代码(迭代法): 代码(递归法): 3.方法二:反转链表 思路: 代码: 4.方法三:保存数组,再反转数组 思路: 代码: 5.总结: 1.题 ...

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

    题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路: 链表的遍历只能从头向尾进行,要从尾到头输出,考虑用栈.先从头到尾遍历一次链表,同时将值进栈,再清空栈,同时将值 ...

最新文章

  1. Exchange server 2010 beta安装部署流程
  2. 【Linux】44.设置ubuntu电脑为简单的密码
  3. 9.停下来说说jquery
  4. Servlet的重定向和转发特点
  5. JAVA进阶教学之(String类的构造方法)
  6. oracle 数据库日期定义,Oracle数据库实现日期遍历功能
  7. [Magento error] The url is not accessible, unable to read response
  8. python网络虫营销_python与sem,大数据降低竞价推广成本利器
  9. 我为什么憎恨Framework
  10. Nginx系列(6):Web服务器分析(理论)
  11. Java集合常见面试题集锦
  12. 【Codeforces 372A】Counting Kangaroos is Fun
  13. aardio - f()函数通过变量名将变量值整合到一串文本中
  14. 微信机器人接口,个人号API二次开发
  15. 朱丹老师课程学习笔记:8、职场晋升-没人带怎么办?这样搜资料的小白也能变大神
  16. 烟雨江湖服务器维护,烟雨江湖初始属性选择推荐 烟雨江湖出生攻略
  17. JSP中img标签图片在浏览器中不显示问题
  18. 为什么能够通过type_id::create创建实例
  19. 大势所趋,RIA已成为主流应用程序!
  20. 通俗易懂讲解汇率、外币汇率、本币汇率、通货膨胀

热门文章

  1. ssm整合 durid数据源 报错java.sql.SQLException: Access denied for user ‘xxx‘@‘localhost‘
  2. jdbc 连接 Oracle 进行基本的增删改查
  3. 【C++深度剖析教程15】经典问题解析之关于string的疑问
  4. not enough arguments for format string
  5. HDU 1284 钱币兑换问题 (动态规划 背包方案数)
  6. Android笔记-Activity相关+内存泄漏
  7. React Navigation 导航栏样式调整+底部角标消息提示
  8. 内置函数之sorted,filter,map
  9. javah找不到类文件
  10. [Leetcode][第322题][JAVA][零钱兑换][回溯][记忆化搜索][动态规划]