从尾到头打印一个链表
个站求访
首页_码到城攻码到城攻分享但不限于IT技术经验技巧、软硬资源、所闻所见所领会等,站点提供移动阅读、文章搜索、在线留言、支付打赏、个人中心、免签支付等功能https://www.codecomeon.com/index
这样的链表问题时不时的出现,你有没有特定的方法去处理呢:以下给出你可能用到的算法:
第一种:改变链表的结构
思想:
1.从尾到头打印链表,那就逆置链表呗
2.打印逆置后的链表;
这个简单,直接上代码:
void PrintListRevers(ListNode* pHead)
{//1.链表逆置ListNode* newHead = NULL;ListNode* cur = pHead;while (cur){ListNode* tmp = cur;cur = cur->m_pNext;tmp->m_pNext = newHead;newHead = tmp;}//2.打印逆置链表ListNode* tmp = newHead;while (tmp){cout << tmp->m_nValue << " ";}cout << endl;
}
很简单,但是,很不辛的改变了链表原来的结构 这是一种只做读操作不应该出现的,所以,有下边的算法;
方法二:借用栈
思想:
1.由于是从尾部开始打印,如果我们是从头开始遍历,那么先遍历的后打印,这正好的栈的特点。
2.遍历完了之后,所有节点入栈,之后出栈打印。
于是,下边简单的代码又出来了:
void PrintListRevers(ListNode* pHead)
{std::stack<ListNode*> nodes;ListNode* pNode = pHead;while(pNode != NULL){nodes.push(pNode);pNode = pNode->m_pNext;}while(!nodes.empty()){pNode = nodes.top();printf("%d\t", pNode->m_nValue);nodes.pop();}
}
方法三:递归
思想:
1.递归就是用栈的思想,既然能想到栈,递归也就想到了
代码:
void PrintListRevers(ListNode* pHead)
{if(pHead != NULL){if (pHead->m_pNext != NULL){PrintListRevers(pHead->m_pNext);}//printf很好控制打印格式printf("%d\t", pHead->m_nValue);}
}
但是,递归的缺点很明显,如果连边过长,就会造成栈溢出等问题,谨慎使用!
赐教.
从尾到头打印一个链表相关推荐
- 从尾到头打印单向链表
需求: 给定一个单项链表的头结点,从尾到头打印链表中的节点的值. 分析: 思路一 由于从链表的结尾开始逆序打印,也就是说最后的节点先打印,联想到后进先出,可以使用栈来依次把链表节点保存起来,然后从新栈 ...
- 剑指offer java版 test3—从尾到头打印链表
标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...
- 牛客网(剑指offer) 第三题 输入一个链表,从尾到头打印链表每个节点的值。
//输入一个链表,从尾到头打印链表每个节点的值. //解题思路:遍历每一个节点 并将节点放入数组中 最后翻转数组 function printListFromTailToHead($head) {$ ...
- 链表怎么输出最后一个元素无空格_剑指offer系列----从尾到头打印链表
从尾到头打印链表 信息卡片 时间:2020-03-23 题目:从尾到头打印链表 tag:list 题目描述 输入一个链表,按链表从尾到头的顺序返回一个 ArrayList. 01 调用 reverse ...
- 剑指offer:面试题06. 从尾到头打印链表
题目:从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 & ...
- 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...
- 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java
<LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...
- java从尾到头打印链表数据_Java编程实现从尾到头打印链表代码实例
问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值. 首先定义链表结点 public class ListNode { int val; ListNode next = null; L ...
- JAVA实现从尾到头打印链表(《剑指offer》)
最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...
最新文章
- MVP使用中不好的味道
- python学习笔记3—流程控制if、for、while
- ege函数库_基于c++ ege图形库实现五子棋游戏
- Visual C++——《可视化编程技术》实验报告——MFC编程
- linux拉取指定时间内,Linux 日期和时间操作详解
- python tornado 工程范例
- 如何使用工具进行线上 PHP 性能追踪及分析?
- deeplearning.ai——构建一个LR分类器来识别猫
- C# WinForm 基础教程
- 华为手机怎么把计算机放到桌面,将华为手机投影到计算机屏幕
- freessl申请ssl证书-笔记
- 多分辨率风场数据可视化
- Nginx-代理服务器
- html和js制作个人所得税表格,【JS】计算个人所得税(新版)
- 全新三维成像技术:我们离科幻故事里的立体投影又近了一步
- Windows键盘快捷方式
- Arnold阿诺德渲染器C4D插件安装及激活教程
- java functionex_Atitit. atiJavaExConverter4js 新的特性
- 图表制作中需要注意哪些问题:认识图表、选择图表
- 记录~OPENCV读图失败的三种情况,其中一种情况罕见