题目:输入一个链表的头节点,从尾到头打印出每个节点的值。已知链表节点组成只有节点值(value)和下一个节点(next)。如下:
class Node<E>{
public E value;
public Node<E> next;
}
解法一:新建一个栈,从头(输入的头节点)到尾遍历链表,将每一个节点的值放入栈中,遍历完成后。再执行出栈操作。
public void printReversingly_stack(Node<E> head){
Stack<E> stack = new Stack<E>();
Node<E> cur = head;
while(cur != null){
stack.push(cur.value);
cur = cur.next;
}
while(!stack.isEmpty()){
System.out.print(stack.pop()+"\t");
}
}
解法二:使用递归的思想。方法一用到了栈,而递归本质上就是栈结构,所以当然也能使用递归来解决。要实现反过来输出链表,这里我们在遍历每一个节点的时候,都先递归输出后一个节点的值,再输出自身。
public void printReversingly_Recurively(Node<E> head){
if (head != null) {
if (head.next != null) {
printReversingly_Recurively(head.next);
}
System.out.print(head.value+"\t");
}
}