剑指Offer - 九度1511 - 从尾到头打印链表
剑指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)。
// 650320 zhuli19901106 1511 Accepted 点击此处查看所有case的执行结果 5088KB 731B 90MS
//
#include <cstdio>
#include <vector>
using namespace std; class ListNode{
public:
int val;
ListNode *next;
ListNode(int _val = ) : val(_val), next(NULL){}
}; int main()
{
ListNode *root;
ListNode *tail;
int n;
vector<ListNode *> vv; root = new ListNode();
tail = root;
vv.clear();
while(scanf("%d", &n) == && n >= ){
tail->next = new ListNode(n);
tail = tail->next;
vv.push_back(tail);
} while(vv.size() > ){
printf("%d\n", vv[vv.size() - ]->val);
vv.pop_back();
} tail = root;
while(tail != NULL){
root = tail->next;
delete tail;
tail = root;
} return ;
}
剑指Offer - 九度1511 - 从尾到头打印链表的更多相关文章
- JS 剑指Offer(四) 从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 首先定义一下链表中的节点,关于链表这个数据结构在另外一篇文章中会详细讲 function ListNode(val) { t ...
- 剑指offer【03】- 从尾到头打印链表(4种实现方法)
题目:从尾到头打印链表 考点:链表 题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 法一:ArrayList头插法 /** * public class ListNode ...
- 剑指offer(3)从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值. 题目分析 比较简单,主要注意下从尾到头,可以用栈可以用递归,我给出我比较喜欢的代码吧 代码 /* function ListNode(x){ t ...
- 剑指offer第二版-6.从尾到头打印链表
描述:输入一个链表的头节点,从尾到头打印每个节点的值. 思路:从尾到头打印,即为“先进后出”,则可以使用栈来处理:考虑递归的本质也是一个栈结构,可递归输出. 考点:对链表.栈.递归的理解. packa ...
- 【剑指Offer】3、从尾到头打印链表
题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路: (三种方法:借助栈.递归.列表的首位插入) 从头到尾打印链表比较简单,从尾到头很自然的可以 ...
- 剑指Offer编程题3——从尾到头打印链表
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 题目解析 方法1:建立两个vector,第一个用来存储正向访问的数据,第二个用来反向存储. /** * struct L ...
- 剑指offer(5)——从尾到头打印链表
题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: public class ListNode { int val; ListNode next = null; ListN ...
- 剑指Offer_编程题之从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值.
- 剑指offer_面试题5_从尾到头打印链表(栈和递归实现)
题目:输入一个链表的头结点,从尾到头反过来打印出每一个节点的值 考察 单链表操作.栈.递归等概念. 理解:要实现单链表的输出,那么就须要遍历.遍历的顺序是从头到尾.而节点输出的顺序是从尾到头.因此,先 ...
随机推荐
- ubuntu linux查看cpu信息
$ cat /proc/cpuinfo CPU核心数量 $ grep -c processor /proc/cpuinfo
- ubuntu 安装 deb 软件包
参考链接地址 blog.csdn.net/kevinhg/article/details/5934462 sudo dpkg -i xxxx.deb 安装一个 Debian 软件包,如你手动下载的文件
- SINAMICS S120屏蔽报警
通用的报警屏蔽方法: P2118 = 需要屏蔽的报警号 P2119 = 屏蔽的方式
- Linux MySQL 5.1源码安装
安装必备的软件 yum install ncurses-devel -y yum install pcre pcre-devel -y yum install gcc* -y 解压缩 tar -z ...
- 简单广搜,迷宫问题(POJ3984)
题目链接:http://poj.org/problem?id=3984 解题报告: 1.设置node结构体,成员pre记录该点的前驱. 2.递归输出: void print(int i) { ) { ...
- [论文理解]关于ResNet的进一步理解
[论文理解]关于ResNet的理解 这两天回忆起resnet,感觉残差结构还是不怎么理解(可能当时理解了,时间长了忘了吧),重新梳理一下两点,关于resnet结构的思考. 要解决什么问题 论文的一大贡 ...
- 1012: A MST Problem
1012: A MST Problem 时间限制: 1 Sec 内存限制: 32 MB提交: 63 解决: 33[提交][状态][讨论版][命题人:外部导入] 题目描述 It is just a ...
- service 入门
https://www.cnblogs.com/keguangqiang/p/3663086.html#undefined
- Nginx + uWSGI + web.py 搭建示例
(1)安装Nginx1.1 下载nginx-1.0.5.tar.gz并解压1.2 ./configure (也可以增加--prefix= path指定安装路径)此时有可能会提示缺少pcre支持,如果要 ...
- 数据对齐 posix_memalign 函数详解
对齐 数 据的对齐(alignment)是指数据的地址和由硬件条件决定的内存块大小之间的关系.一个变量的地址是它大小的倍数的时候,这就叫做自然对齐 (naturally aligned).例如,对于一 ...