需求:从尾到头打印链表,不能使其结构发生变化
思路:可以使用Stack(栈):先进后出
小例子:
// 百度面试题
// 可以利用栈这个数据结构,将各个节点压入到栈中,然后利用栈的先进先出的特点,就实现了逆序打印的效果
public static void reversePrint(HeroNode head) {
if (head.next==null) {
return; // data==null
}
// 创建一个栈,将各节点压入栈中
Stack<HeroNode> stack = new Stack<>();
HeroNode cur = head.next;
while (cur!=null) {
stack.push(cur);
cur = cur.next; // 后移,方便压入下一个节点。
}
// 将栈中的节点进行打印,pop出栈
while (stack.size()>0) {
// stack的节点是先进后出
System.out.println(stack.pop());
}
}
总结:栈结构真好用。