逆序打印单链表详解
思路分析
思路1:
可以先将单链表反转(上一篇博客),然后打印反转后的链表,但是单链表反转会破坏原先链表的结构,对于某些情况并不使用
思路2:
- 基于栈的先进后出特性,可以遍历单链表,依次将每一个节点入栈
- 再遍历栈,在节点出栈时,最后入栈的节点先被打印,即可实现链表的逆序打印
- 说明:较为简单
源码及分析
//逆序打印单链表
//思路:
//1.基于栈的先进后出特性,先将单链表的所有节点入栈
//2. 然后弹出栈中元素即可
public static void reversePrint(HeroNode head) {
//先判断链表是是否为空
if (head.next == null) {
return;
}
//定义一个栈保存链表节点
Stack<HeroNode> stack = new Stack<>();
//定义一个辅助指针当前节点的下一个节点
HeroNode cur = head.next;
while (cur != null) {
//入栈
stack.push(cur);
//指针后移
cur = cur.next;
}
//全部入栈后节点出栈,实现逆序效果
//栈结构在取出一个元素后,这个元素将会被删除
while (stack.size() > 0) {
System.out.println(stack.pop());
}
}