[Jobdu] 题目1511:从尾到头打印链表——单链表的倒置输出
// ListNode
typedef struct LNode {
int key;
struct LNode *next;
}LNode;
分析:这是一道很有意思的面试题,此题以及此题的变体经常出现在各大公司的面试、笔试中。
看到这道题后,第一反应是从头到尾输出比较简单。然后经过分析,这道题有以下几种解决方法:
将链表中节点的指针反转过来,然后在从头到尾输出节点中的值
当要倒置输出值时,我们会想到用栈来实现。所以这种方法是,遍历链表节点中的值,依次入栈,最后弹栈输出
仔细分析这两种方法,解决问题都需要两步。方法一显然不是面试官想要的算法,而方法二需要维护一个额外的栈,在不借用STL容器时,实现起来比较麻烦,那么有没有一步到位的算法呢?
答案是肯定的,仔细分析第二种方法,需要用到栈来实现这个函数,而递归本质上就是一个栈结构。于是想到要用递归的思想来解决问题。下面贴出用递归实现的代码,这类问题要理解,并且能够运用这种递归思想来解决类似的问题:
// given a head pointer, print key from the end to the beginning
void printListReversely(LNode *head) {
if (head) {
if (head->next)
printListReversely(head->next);
}
printf("%d ", head->key);
}
扩展:
给定一个未知长度的字符串,从尾到头输出一个字符窜(在不使用string.h文件中strlen函数的前提下)
定义一个函数求字符串的长度,要求函数内部不能声明任何变量
// print string reversely
void printStringReversely(const char *str) {
if (*str != '\0') {
if (*(str + ) != '\0')
printStringReversely(str + );
} else {
printf("\n");
return;
}
printf("%c", *str);
}
// strlen implemented by recursion
int strlen(const char *str) {
if (*str == '\0')
return ;
else
return strlen(str + ) + ;
}
[Jobdu] 题目1511:从尾到头打印链表——单链表的倒置输出的更多相关文章
- 剑指Offer - 九度1511 - 从尾到头打印链表
剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例.每一组测试案例 ...
- 九度OJ 1511 从尾到头打印链表
题目地址:http://ac.jobdu.com/problem.php?pid=1511 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测 ...
- 【C++】面试题目:从尾到头打印链表
通过<剑指offer 名企面试官精讲典型编程题>看到一道讲解链表的题目. 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值 链表定义如下: typedef struct _NO ...
- 剑指Offer面试题:4.从尾到头打印链表
一.题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 到解决这个问题肯定要遍历链表.遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头.也就是说第一个遍历到的结 ...
- 剑指offer【03】- 从尾到头打印链表(4种实现方法)
题目:从尾到头打印链表 考点:链表 题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 法一:ArrayList头插法 /** * public class ListNode ...
- JZ-003-从尾到头打印链表
从尾到头打印链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 题目链接: 从尾到头打印链表 代码 import java.util.ArrayList; /** * 标题 ...
- 【剑指Offer面试编程题】题目1511:从尾到头打印链表--九度OJ
题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类 ...
- 九度oj题目1511:从尾到头打印链表
题目1511:从尾到头打印链表 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:6010 解决:1805 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包 ...
- 剑指Offer 从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值. 输入描述: 输入为链表的表头 输出描述: 输出为需要打印的“新链表”的表头 思路: 用容器vector,递归到最后一个元素,push_back到 ...
- offer--链表反转和从尾到头打印链表
这个是高频的面试题,今天总结了一些.反转链表用三个指针实现,返回新链表的头节点:而从尾到头打印,应用栈实现,返回vector整个链表. //题目描述 // //输入一个链表,反转链表后,输出链表的所有 ...
随机推荐
- vs错误【C1083 C1854 C4727】的若干解决办法(对预编译文件头的解释)
这几天写程序,无意间把编译中间文件给删了,然后就出现了C1083编译错误. xxx.cpp ..\commen\xxx.cpp(2) : fatal error C1083: 无法打开预编译头文件:“ ...
- Microsoft Azure 在北美 TechEd 大会上发布令人振奋的更新,帮助客户开始使用云服务
云计算因其速度.规模和成本节省等优势而备受众多企业青睐.但企业需帮助,才能以安全可靠的方式使用云,同时还要利用企业的现有投资, 才能实现这些优势.因此,在TechEd 大会上,我们推出了一些新的服务, ...
- [LeetCode][Python]Palindrome Number
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/palindr ...
- ldap理论属于概念缩略词
Standalone LDAP Daemon, slapd(standalone lightweight access protocol) ldap 389 default listener port ...
- css首行缩进两个字符串
text-indent:2em; 这个属性就可以缩进,但是2em不确定是什么意思:抽空总结一下
- Mahout源码MeanShiftCanopyDriver分析之二MeanShiftCanopyMapper仿造
首先更正一点,昨天处理数据的时候是有问题的,直接从网页中拷贝的文件的空格是有问题的,直接拷贝然后新建的文件中的空格可能有一个两个.三个的,所以要把两个或者三个的都换为一个,在InputMapper中下 ...
- linux性能监控三张图
一.监控 二.测试 三.优化
- 笔记-AndroidStudio开发环境的搭建
首先当然是下载AndroidStudio,目前最新的稳定版是1.1 然后下载studio版本的sdk,如果用原装sdk,需要更新 安装的过程中会选择sdk的路径,此时如果已经解压了原装sdk,会进 ...
- 为什么IIS中找不到.net framework 4.5(转)
.net 4.5是4.0的update,所以直接用4.0部署就可以了 .NET 4.5 is an in-place replacement for .NET 4.0, When .NET 4.5 i ...
- python request模块学习
安装: pip install requests 使用: import requests HTTP请求:GET.POST.PUT.DELETE.HEAD.OPTIONS 1) get res = re ...