逆序打印链表

题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。

非递归方式:利用栈

public static void printListReverse(ListNode headNode){
		Stack stack=new Stack();
		while(headNode!=null){
		stack.push(headNode);
		headNode=headNode.next;
		}
		while(!stack.isEmpty()){
		System.out.println(stack.pop().data);
		}
	}

递归方式:

public static void printListReverse(ListNode headNode){
     if(headNode!=null){
         if(headNode.next!=null){
            printListReverse(headNode.next);
         }
     }
     System.out.println(headNode.data);
}

测试:

public static void main(String[] args) {
   
		ListNode node1=new ListNode();
		ListNode node2=new ListNode();
		ListNode node3=new ListNode();
		node1.data=1;
		node2.data=2;
		node3.data=3;
		node1.next=node2;
		node2.next=node3;
		printListReverse(node1);
	}

你可能感兴趣的:(剑指offer)