[JZ6][链表]从尾的到头打印链表[Java]
2021/12/24 17:07:11
本文主要是介绍[JZ6][链表]从尾的到头打印链表[Java],对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目:输入一个链表的头结点,从尾到头反过来打印出每个节点的值.
用Java定义的链表的数据结构:
class ListNode{ int val; ListNode next; public ListNode(int val){ this.val = val; } }
分析:
那就直接遍历单链表,然后把每个节点的值都存起来然后倒序输出即可.
这个题目使用栈来作为中间件刚刚好,因为栈是先进后出的.
或者利用数组也可以,输出的时候控制下标就行.
class JZ6{ public static void printListFromTailToHead(ListNode listNode) { //创建一个栈 Stack<Integer> stack = new Stack<>(); //指针直接指向 头结点 ListNode p = listNode; while(p!=null){//p的指向不为空则继续遍历. stack.push(p.val);//将每个节点的值压入栈中 p=p.next; } while(!stack.empty()){ //栈不为空,就把栈打印空 System.out.println(stack.pop()); } } }
既然能用栈,那就很容易想到递归.
但是系统这样有一个问题,就是如果链表过长,会导致系统栈溢出.因此还是上面的那个代码性能更加稳定.
public static void digui(ListNode head){ if(head!=null){ digui(head.next); System.out.println(head.val); } }
这篇关于[JZ6][链表]从尾的到头打印链表[Java]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?