[题目] 输入一个链表的头结点,从尾到头反过来输出每个结点的值. [分析] 这是一道很有意思的面试题.该题以及它的变体经常出现在各大公司的面试.笔试题中. [链表逆置] 看到这道题后,第一反应是从头到尾输出比较简单.于是很自然地想到把链表中链接结点的指针反转过来,改变链表的方向.然后就可以从头到尾输出了.但该方法需要额外的操作,应该还有更好的方法. [使用stack存储] 接下来的想法是从头到尾遍历链表,每经过一个结点的时候,把该结点放到一个栈中.当遍历完整个链表后,再从栈顶开始输出结点的值,此…
题目地址:http://ac.jobdu.com/problem.php?pid=1511 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类推.当输入到-1时代表链表输入完毕.-1本身不属于链表. 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行. 样例输入: 1 2 3 4 5 -1 样例输出: 5 4 3 2 1…
// ListNode typedef struct LNode { int key; struct LNode *next; }LNode;   分析:这是一道很有意思的面试题,此题以及此题的变体经常出现在各大公司的面试.笔试中. 看到这道题后,第一反应是从头到尾输出比较简单.然后经过分析,这道题有以下几种解决方法: 将链表中节点的指针反转过来,然后在从头到尾输出节点中的值 当要倒置输出值时,我们会想到用栈来实现.所以这种方法是,遍历链表节点中的值,依次入栈,最后弹栈输出 仔细分析这两种方法,…
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 输入一个链表的头结点, 从尾到头反过来打印出每个结点的值. 进一步详细说明:不允许在打印时修改链表的结构.链表结点可定义为: struct ListNode { int m_nKey; ListNode* m_pNext; }; 算法设计思想 正常情况,遍历链表都是从前到后的,即从头到尾.如果从尾到头打印链表元素,可以借助栈的 “后入先出” (Last in, Fir…
题目1511:从尾到头打印链表 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:6010 解决:1805 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例.每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类推.当输入到-1时代表链表输入完毕.-1本身不属于链表. 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行. 样例输入: 1 2 3 4 5 -1 样例输出…
题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类推.当输入到-1时代表链表输入完毕.-1本身不属于链表. 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行. 样例输入: 1 2 3 4 5 -1 样例输出: 5 4 3 2 1 [解题思路]个人感觉这道题目没有什么意思,所以也就懒得用真正的链表去模拟,直接用一个递归输出…
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 栈 递归 数组 日期 题目地址:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 题目描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <=…
一.题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 到解决这个问题肯定要遍历链表.遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头.也就是说第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出.这就是典型的“后进先出”,我们可以用栈实现这种顺序. 二.解题思路 每经过一个结点的时候,把该结点放到一个栈中.当遍历完整个链表后,再从栈顶开始逐个输出结点的值,此时输出的结点的顺序已经反转过来了. 三.解决问题 3.1 代码实现 这里使用的是自定义…
题目描述 输入一个链表,从尾到头打印链表每个节点的值. 输入描述: 输入为链表的表头 输出描述: 输出为需要打印的“新链表”的表头 思路: 用容器vector,递归到最后一个元素,push_back到dev中. AC代码: /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public…
这个是高频的面试题,今天总结了一些.反转链表用三个指针实现,返回新链表的头节点:而从尾到头打印,应用栈实现,返回vector整个链表. //题目描述 // //输入一个链表,反转链表后,输出链表的所有元素. struct ListNode { int val; struct ListNode *next; ListNode(int x) :val(x), next(nullptr){} }; //思路 //在反转链表的时候,我们很容易想到让当前结点的next指向前一个结点, //但是这样做了之后…
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 链表结点定义如下: Struct ListNode{ int   m_nKey; ListNode*   m_pNext; }; 我们可以用栈来实现“后进先出”的顺序.每经过一个结点的时候,把该结点防到一个栈中.当遍历完整个链表后,再从栈顶开始逐个输出结点的值,此时输出的结点的顺序已经反转过来了. void PrintListReversingly_Iteratively(ListNode* pHead){ std::stack<L…
输入一个链表,从尾到头打印链表每个节点的值. 输入描述:输入为链表的表头 输出描述:输出为需要打印的“新链表”的表头 一.问题分析 初拿到这个题目时,这应该是考察单向链表这一数据结构.单向链表的遍历总是从头指针逐项遍历各个节点,现在要求从尾到头打印节点的值,我们可以在遍历时把各节点压入栈内,最后出栈打印各个节点值,即可达到要求. 实现之前,我们先来看看如何创建一个链表. 1,链表节点的数据结构定义 1 struct ListNode { 2 int val; 3 struct ListNode…
面试题5:从尾到头打印链表 提交网址: http://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156 本题知识点: 链表 题目描述 输入一个链表,从尾到头打印链表每个节点的值.  输入描述: 输入为链表的表头 输出描述: 输出为需要打印的"新链表"的表头 分析: 此题要求返回类型为vector<int>,故有两种方法: 1. 使用vector容器在头部进行插入…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } 思路 结点遍历顺序只能从头到尾,但是输出的顺序却为从尾到头,是典型的“后进先出”问题,这就要联想到使用栈,从而也可以联…
题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路: 链表的遍历只能从头向尾进行,要从尾到头输出,考虑用栈.先从头到尾遍历一次链表,同时将值进栈,再清空栈,同时将值存入ArrayList中. 代码: /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution {…
本文是原创文章,转载请注明出处! 0.前言 # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 输入一个链表,从尾到头打印链表每个节点的值 2.思路 # 不改变链表结构的情况下,首先,遍历链表将链表结点值存入栈中:然后,从栈顶逐个输出结点的值到向量. 3.code /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; *…
剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例.每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类推.当输入到-1时代表链表输入完毕.-1本身不属于链表. 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行. 样例输入: 1 2 3 4 5 -1 样例输出: 5 4 3 2 1 题意分…
  题目描述:   输入一个链表,按链表值从尾到头的顺序返回一个ArrayList.   解题思路:   (三种方法:借助栈.递归.列表的首位插入)   从头到尾打印链表比较简单,从尾到头很自然的可以想到先将链表进行反转,然后再打印.但是,通常我们不希望改变原链表的结构,这是一个只读操作.   因此,我们进一步分析,可以发现排在后面的先输出,这是一个典型的"后入先出"的思想,因此很自然的可以想到用栈来实现,每遍历一个结点,可以将其压入栈中,遍历结束后再逐个弹栈,将结点值存入ArrayL…
题目描述 思路分析 Java代码 代码链接 题目描述 从尾到头打印链表,将其添加到ArrayList当中输出 思路分析 递归的思路 利用栈 Java代码 public class Offer006 { public static void main(String[] args) { ListNode ListNode1 = new ListNode(1); ListNode ListNode2 = new ListNode(2); ListNode ListNode3 = new ListNod…
题目: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 分析: 很简单的一道题,其实也就是从尾到头打印链表,题目要求返回ArrayList,其实也就是一个数组. 可以将链表中的元素全部压入栈中,再从栈中依次弹出元素,就可以得到倒序的链表输出. 当然也可以直接将链表中元素传入数组中,最后再翻转数组即可. 程序: C++ //use stack class Solution { public: vector<int> printListFromTailToHead(ListNode…
1. 题目描述 输入一个链表,从尾到头打印链表每个节点的值. 2. 思路和方法 2.1 推荐的方法 (1)栈,循环 后进先出,我们可以用栈实现这种顺序.每经过一个结点的时候,把该节点放到一个栈里面,当遍历完整个链表后,再从栈顶开始逐个输出结点的值,此时输出的结点的顺序已经反转过来了. 2.2 不推荐的方法 (1)直接修改输入数据 如果可以修改原来链表的结构,那么把链表中链接结点的指针反转过来,改变链表的方向,然后就可以从头到尾输出了. 但是,打印通常是一个只读操作,我们不希望打印时修改内容,所以…
题目描述: 输入一个链表,从尾到头打印链表每个节点的值.返回新链表. import java.util.Stack; //定义链表结构 class ListNode { int value; ListNode next; } public class PrintListReverse { public static void main(String[] args) { ListNode node1 = new ListNode(); ListNode node2 = new ListNode()…
链表 6.从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 方法一 迭代 创建空列表res,将链表值head.val依次存进res,返回翻转后的res 代码 class Solution: def reversePrint(self, head: ListNode) -> List[int]: res = [] while head: res.append(head.val) head = head.next return res[::-1] 结果 执行用时…
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 标签:链表 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 输入:head = [1,3,2] 输出:[2,3,1] 0 <= 链表长度 <= 10000 分析 这题要你从尾到头打印链表,也就是倒序输出链接,但它要的返回值是一个数组. 解法一:双端队列法.使用双端队列,遍历链表,每次插入链表的头部.然后遍历队列,每次…
题目 剑指 Offer 06. 从尾到头打印链表 思路1(递归) 首先先遍历整个脸表,计算出链表的长度(用于初始化数组).然后进行递归,从链表头部递归到尾部,这期间什么都不做,直到递归到最后一个节点的时候开始返回,开始返回的同时吧当前节点的值加入到res数组 代码 class Solution { int[] res; int index = 0; public int[] reversePrint(ListNode head) { // 先统计链表的总节点数量 int count = 0; L…
题目:从尾到头打印链表 考点:链表 题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 法一:ArrayList头插法 /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.ArrayList; public class Solution { //Arra…
本题来自<剑指offer> 从尾到头打印链表 题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 方案一:首先遍历到尾部,然后从尾部进行到头值进行操作,后进先出,符合栈的规则.采用栈进行存储数据.采用C++编程. 方案二:采用递归的方式,其实栈就是递归的思路.采用C++编程. 方案三:遍历期间直接将值存储,最后翻转数据即可.采用python编程. C++ Code (栈方式): /** * struct ListNode { * int val; * struct…
题目描述 输入一个链表,从尾到头打印链表每个节点的值. 题目分析 比较简单,主要注意下从尾到头,可以用栈可以用递归,我给出我比较喜欢的代码吧 代码 /* function ListNode(x){ this.val = x; this.next = null; }*/ function printListFromTailToHead(head) { // write code here const res = []; let pNode = head; while (pNode !== null…
题目描述 输入一个链表,从尾到头打印链表每个节点的值. 题目比较水,一遍就 AC 了,来看代码: /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(struct ListNode *head) {…
文件main.cpp // 从尾到头打印链表 // 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. #include <iostream> #include <stack> #include "List.h" using namespace std; void PrintListReversingly_Iteratively(ListNode* pHead)//解法一:使用栈 { stack<ListNode*> nodes;//定义…