- 从尾到头打印单链表 【百度面试题。方式1:反向遍历;方式2:Stack栈。】
// 方式2:
// 可以利用栈这个数据结构,将各个节点压入到栈中,然后利用栈的先进后出的特点,就实现了逆序打印的效果。
public static void reversePrint(HeroNode head) {
// 空链表,不能打印。
if (head.next == null) {
return;
}
// 创建一个栈,将各个节点压入栈。
Stack<HeroNode> stack = new Stack<HeroNode>();
HeroNode cur = head.next;
// 将链表的所有节点压入栈。
while (true) {
if (cur == null) {
break;
}
stack.push(cur);
cur = cur.next; // cur后移,这样就可以压入下一个节点。
}
// 将栈中的节点进行打印,pop 出栈。
while (stack.size() > 0) {
System.out.println(stack.pop()); // stack的特点是先进后出。
}
}