剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08
题目描述:

输入一个链表,从尾到头打印链表每个节点的值。

输入:

每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。

输出:

对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。

样例输入:
1
2
3
4
5
-1
样例输出:
5
4
3
2
1
题意分析:  给定一条单链表,从未到头打印出来。第一个念头是可以用头递归的写法进行倒序输出,但不论头递归还是尾递归都不是个会写代码的人该写出来的,因为递归调用中的栈操作开销太累,而且百万级的数据就能搞出栈溢出了。所以可以采取先反转链表,再输出的方法。至于输出完了要不要再转回去,就看数据还有没有人要用了。不过从原则上来说,既然要求设计的是逆序输出链表,就不应该改变原始数据,应该在处理完了以后把链表给转回来的。本题中的数据时一次性的,我索性输出完了就给释放掉了。  时间复杂度O(n),空间复杂度O(1)。
 1 // 650320    zhuli19901106    1511    Accepted    点击此处查看所有case的执行结果    5088KB    731B    90MS
 2 // 201311122057
 3 #include <cstdio>
 4 #include <vector>
 5 using namespace std;
 6
 7 class ListNode{
 8 public:
 9     int val;
10     ListNode *next;
11     ListNode(int _val = 0) : val(_val), next(NULL){}
12 };
13
14 int main()
15 {
16     ListNode *root;
17     ListNode *tail;
18     int n;
19     vector<ListNode *> vv;
20
21     root = new ListNode();
22     tail = root;
23     vv.clear();
24     while(scanf("%d", &n) == 1 && n >= 0){
25         tail->next = new ListNode(n);
26         tail = tail->next;
27         vv.push_back(tail);
28     }
29
30     while(vv.size() > 0){
31         printf("%d\n", vv[vv.size() - 1]->val);
32         vv.pop_back();
33     }
34
35     tail = root;
36     while(tail != NULL){
37         root = tail->next;
38         delete tail;
39         tail = root;
40     }
41
42     return 0;
43 }

 

转载于:https://www.cnblogs.com/zhuli19901106/p/3450320.html

剑指Offer - 九度1511 - 从尾到头打印链表相关推荐

  1. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  2. 剑指offer面试题[5]-从尾到头打印链表

    目描述 输入一个链表,从尾到头打印链表每个节点的值. /** *  struct ListNode { *        int val; *        struct ListNode *next ...

  3. 【剑指offer】登峰造极之从尾到头打印链表

    题目链接 从尾到头打印链表. 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:1254529 题目描述 /** struct ListNode { i ...

  4. 剑指offer面试题06. 从尾到头打印链表(辅助栈法)

    题目描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 思路 详见链接 代码 class Solution:def reversePrint(self,head:ListNod ...

  5. 剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)

    文章目录 1. 题目 2. 解题 2.1 stack解题 2.2 递归 2.3 反转链表 1. 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head ...

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

    题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 考虑用栈 public void invertedList1(ListNode head) {if (head == null) {r ...

  7. 剑指offer(C++)-JZ6:从尾到头打印链表(数据结构-链表)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回). 如输入{ ...

  8. 【剑指offer-Java版】05从尾到头打印链表

    从头到尾打印链表:递归实现比较简单 注意处理异常输入:如输入指针为空 处理边界条件等即可 public class _Q05 {public static void main(String[] arg ...

  9. 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列

    剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出 ...

最新文章

  1. pip3 install numpy
  2. innodb一页为什么要存储两行记录_InnoDB中的页合并与分裂
  3. 三种权重的初始化方法
  4. Google Chrome —— 离线安装/安装包下载解决方案
  5. Linux记录-CPU指标介绍
  6. 模拟springIOC容器的annotation
  7. mysql 长时间连接没操作,断开连接
  8. 【译】Asp.Net 导出 Excel 数据的9种方案
  9. linux内核安装指南-1
  10. 简单的抽奖function
  11. 【拓展】一个故事讲完 CPU 的工作原理
  12. SQL语句:查询语句及多表查询典型例子
  13. 统一建模语言UML概述
  14. Android APP完整基础教程(01)开发环境简介
  15. 14.荔枝派 zero(全志V3S)-驱动OV2640拍照、录制视频
  16. 微服务守护神-Sentinel-概念
  17. 论文研读--Masked Generative Distillation
  18. 今天安利几个App给你
  19. 安装php扩展fileinfo
  20. 【LaTeX】LaTeX打取整符号

热门文章

  1. WinForm控件之【NumericUpDown】
  2. A Network-based End-to-End Trainable Task-oriented Dialogue System
  3. 【洛谷5251】[LnOI2019] 第二代图灵机(线段树+ODT)
  4. Web前端-JavaScript基础教程上
  5. 【Spring】—— 自动装配
  6. [SPOJ 687]Repeats
  7. GUI编程笔记(java)04:GUI(HelloWorld)窗体案例
  8. Linux系统资源限制
  9. spring.net nhibernate 分布布式事务(下)
  10. ASP实现单条件和多条件组合查询的实例