《剑指offer》从尾到头打印链表
本题来自《剑指offer》 从尾到头打印链表
题目:
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
思路:
方案一:首先遍历到尾部,然后从尾部进行到头值进行操作,后进先出,符合栈的规则。采用栈进行存储数据。采用C++编程。
方案二:采用递归的方式,其实栈就是递归的思路。采用C++编程。
方案三:遍历期间直接将值存储,最后翻转数据即可。采用python编程。
C++ Code (栈方式):
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
std::vector<int> result; //存放结果值
std::stack<ListNode*> nodes; //栈,存放其节点的值
ListNode* phead = head;
int val;
while (phead != NULL){ //遍历链表
nodes.push(phead); //将节点加入到栈中
phead = phead->next;
}
while (!nodes.empty()){ //从栈中取数据
val = nodes.top()->val;
result.push_back(val);
nodes.pop();
}
return result;
}
};
C++ Code (递归方式):
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
std::vector<int> result; //用来存放结果值
result = ListFromTailToHead(result,head);
return result;
}
vector<int> ListFromTailToHead(vector<int> result,ListNode* head){
if (head != NULL){ //条件为节点不为空
result = ListFromTailToHead(result,head->next); //递归调用
result.push_back(head->val); //递归结束返回,返回其值
}
return result;
}
};
Python Code:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
result = []
while True:
if listNode == None:
break
result.append(listNode.val)
listNode = listNode.next
result.reverse()
return result
总结:
显式用栈基于循环实现的代码的鲁棒性要要好一些,如果链表较长,就会导致函数调用的层级很深,从而很有可能导致函数调用栈溢出。
递归要把握好,结束条件和返回值,需要更新的操作。
《剑指offer》从尾到头打印链表的更多相关文章
- 从尾到头打印链表——剑指Offer
https://www.nowcoder.net/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156&tPage= ...
- 3、从尾到头打印链表------------>剑指offer系列
题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 分析 要了解链表的数据结构: val属性存储当前的值,next属性存储下一个节点的引用. 要遍历链表就是不断找到当前节点的nex ...
- 【Java】 剑指offer(5) 从尾到头打印链表
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: ...
- 【剑指offer】06从尾到头打印链表,C++实现
本文是原创文章,转载请注明出处! 0.前言 # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 输入一个链表,从尾到头打印链表每个节点的值 2.思路 # 不改变链表结构的情况下,首先 ...
- 剑指Offer - 九度1511 - 从尾到头打印链表
剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例.每一组测试案例 ...
- JS 剑指Offer(四) 从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 首先定义一下链表中的节点,关于链表这个数据结构在另外一篇文章中会详细讲 function ListNode(val) { t ...
- 菜鸟刷题路:剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer&g ...
- 力扣 - 剑指 Offer 06. 从尾到头打印链表.md
题目 剑指 Offer 06. 从尾到头打印链表 思路1(递归) 首先先遍历整个脸表,计算出链表的长度(用于初始化数组).然后进行递归,从链表头部递归到尾部,这期间什么都不做,直到递归到最后一个节点的 ...
- 剑指Offer面试题:4.从尾到头打印链表
一.题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 到解决这个问题肯定要遍历链表.遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头.也就是说第一个遍历到的结 ...
随机推荐
- python---issubclass/type/isinstance/ 反射(内置函数getattr/delattr...)
# 一 python面向对象-内置函数(issubclass(), type(), isinstance()) # issubclass 判断xxxx类是否是xxxx类的子类 class egg: p ...
- Linux故障:linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0"。
linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0". ...
- Subtree Minimum Query CodeForces - 893F (线段树合并+线段树动态开点)
题目链接:https://cn.vjudge.net/problem/CodeForces-893F 题目大意:给你n个点,每一个点有权值,然后这n个点会构成一棵树,边权为1.然后有q次询问,每一次询 ...
- linux 用户管理命令
- 【转载】Latex定制章节编号格式和计数器
原文: http://www.chengkaiblog.com/software-application/latex/customize-section-format-counter.html _1. ...
- 【转】Python之系统交互(subprocess)
[转]Python之系统交互(subprocess) 本节内容 os与commands模块 subprocess模块 subprocess.Popen类 总结 我们几乎可以在任何操作系统上通过命令行指 ...
- Shell-find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
查找所有的 jpg 文件,并且压缩它们: find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
- Linux Makefile 生成 *.d 依赖文件及 gcc -M -MF -MP 等相关选项说明【转】
转自:https://blog.csdn.net/qq1452008/article/details/50855810 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...
- 应用 XAF 开发移动手机应用
应用 XAF 开发移动手机应用: 1. How to create a native mobile or lightweight web client UI based on the existing ...
- SharePoint 2010 安装错误:请重新启动计算机,然后运行安装程序以继续
一.环境:Windows Server 2008 R2 with sp1,SharePoint 2010 二.问题描述: 正常的安装SharePoint 2010 ,安装完必备组件,并提示所有必备组件 ...