(剑指Offer)面试题5:从尾到头打印链表
题目:
输入一个链表的头结点,从尾到头反过来打印每个结点的值。
链表结点定义:
struct ListNode{int value;ListNode* pNext;
};
思路:
1、改变链表结构的话,先反转链表,然后从头到尾打印每个结点的值。(后续博文会有相关实现,这里就暂不实现)
2、无需改变链表结构,使用栈,遍历整个链表,将结点依次入栈,然后再依次出栈,实现“后进先出”。
3、无需改变链表结构,递归实现,如果链表结点数过多的话,可能会导致栈溢出。
代码:
void PrintListReversingly_Iteratively(ListNode* pHead){std::stack<ListNode*> nodes;ListNode* pNode=pHead;while(pNode!=NULL){nodes.push(pNode);pNode=pNode->pNext;}while(!nodes.empty()){pNode=nodes.top();cout<<pNode->value<<"\t";nodes.pop();}cout<<endl;
}void PrintListReversingly_Recursively_1(ListNode* pHead){if(pHead==NULL)return;PrintListReversingly_Recursively_1(pHead->pNext);cout<<pHead->value<<"\t";
}void PrintListReversingly_Recursively_2(ListNode* pHead){if(pHead!=NULL){if(pHead->pNext!=NULL)PrintListReversingly_Recursively_2(pHead->pNext);cout<<pHead->value<<"\t";}
}
在线测试OJ:
http://www.nowcoder.com/books/coding-interviews/d0267f7f55b3412ba93bd35cfa8e8035?rp=1
AC代码:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:void printList(ListNode* head,vector<int> &nodes){if(head!=NULL){printList(head->next,nodes);nodes.push_back(head->val);}return;}vector<int> printListFromTailToHead(struct ListNode* head) {vector<int> nodes;printList(head,nodes);return nodes;}
};
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:vector<int> printListFromTailToHead(struct ListNode* head) {vector<int> nodes;while(head!=NULL){nodes.push_back(head->val);head=head->next;}reverse(nodes.begin(),nodes.end());return nodes;}
};
转载于:https://www.cnblogs.com/AndyJee/p/4624417.html
(剑指Offer)面试题5:从尾到头打印链表相关推荐
- 剑指offer面试题[5]-从尾到头打印链表
目描述 输入一个链表,从尾到头打印链表每个节点的值. /** * struct ListNode { * int val; * struct ListNode *next ...
- 剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)
文章目录 1. 题目 2. 解题 2.1 stack解题 2.2 递归 2.3 反转链表 1. 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head ...
- 剑指offer 面试题5—从尾到头打印链表
题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 考虑用栈 public void invertedList1(ListNode head) {if (head == null) {r ...
- 剑指offer面试题06. 从尾到头打印链表(辅助栈法)
题目描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 思路 详见链接 代码 class Solution:def reversePrint(self,head:ListNod ...
- 剑指Offer - 九度1511 - 从尾到头打印链表
剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案 ...
- 剑指offer java版 test3—从尾到头打印链表
标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...
- 【剑指offer】登峰造极之从尾到头打印链表
题目链接 从尾到头打印链表. 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:1254529 题目描述 /** struct ListNode { i ...
- 剑指offer(C++)-JZ6:从尾到头打印链表(数据结构-链表)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回). 如输入{ ...
- 【剑指offer-Java版】05从尾到头打印链表
从头到尾打印链表:递归实现比较简单 注意处理异常输入:如输入指针为空 处理边界条件等即可 public class _Q05 {public static void main(String[] arg ...
- 剑指offer——面试题60:把二叉树打印成多行
剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...
最新文章
- Linux web 网站服务器 虚拟主机
- 深度学习AI美颜系列---天天P图疯狂变脸算法
- 错误(活动)E0020未定义标识符 “_TCHAR“
- Java 9 揭秘(1. 入门介绍)
- java基本数据类型和包装类相互转换
- Tcpdump 详解
- mysql 5.7.18 winx64安装配置方法
- 都忘了自己还有一套房子了。。。
- python2020未来前景_2020年Python发展前景如何呢?
- linux运行多个c文件路径,linux c的连接库和怎么同时编译多个源程序
- 最新版 | 李沐《动手学深度学习》中文版pdf重磅开源!
- 去掉 iOS 导航栏返回按钮文本三种方案
- 除了被动阅读,用户想要的更多
- 手机浏览器哪个好用,UC、多御和QQ浏览器对比
- 关于windows11麦克风声音小的一个bug
- 2021年广东专精特新中小企业补助及小巨人企业补贴
- Docker 5分钟搭建web服务器
- 如何在r的图片中画出特定点的水平线和垂直线_平面设计新手如何利用点线面进行构图...
- Android 高级混淆和代码保护技术
- cf_global_round7
热门文章
- 父盒子高度为子盒子总高度自动撑满 height: fit-content; //设置内容高度
- React开发(282):公共组件可以提升一下文件层级
- React开发(211):react中refs转发到dom组件
- [html] 使用history路由方式时,你有自己动手配置过服务器端吗?为什么要配服务器端?怎么配?
- 工作308:uni-设置请求参数
- 前端学习(2796):实现左侧数据渲染和点击高亮
- 前端学习(2475):表单数据绑定处理
- “约见”面试官系列之常见面试题之第五十一篇之CSS Sprites(建议收藏)
- oracle之单行函数之分组函数之课后练习
- 前端学习(1563):ng-if