题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。
解题思路:将链表 中的元素存放到栈中,然后从栈顶逐个输出节点的值。或者用递归来实现,我们每访问的一个节点的时候,先递归输出它后面的节点,再输出节点本身。
/*
* 方案一:通过使用栈结构,遍历链表,把先遍历的节点的值推入栈中,遍历结束后通过弹出栈内元素
*实现逆序打印
*/
public static void printListFromTailToHeadByStack(ListNode node){
Stack<Integer> stack=new Stack<Integer>();
while(node!=null){
stack.push(node.val);
node=node.next;
}
while(!stack.isEmpty()){
System.out.print(stack.pop()+",");
}
}
/*
* 方案二:递归法逆序打印链表
*/
public static void printListFromTailToHead(ListNode node){
if(node!=null){
if(node.next!=null){
printListFromTailToHead(node.next);
}
System.out.print(node.val+",");
}
else
System.out.println("输入的链表为空");
}
class ListNode{
int val;
ListNode next=null;
public ListNode(){
}
public ListNode(int value){
this.val=value;
}
}