使用递归进行从尾到头打印链表。
java代码
public class ListNode{
ListNode next;
int val;
ListNode(int x){
val=x;}
public static void print_reverse(ListNode head){
if(head==null||head.next==null) System.out.print(head.val);
ListNode p=head;
while(p!=null){
if(p.next!=null){
print_reverse(p.next);
}
System.out.print(p.val+"\t");
}
}
}
但是当链表较长的时候,递归的层数会特别多,可能造成函数调用溢出,所以还是使用栈这种数据结构鲁棒性好一点。
如下所示:
package binaryTree;
import java.util.Stack;
public class printLata2First {
public static void main(String[] args){
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
Node n4 = new Node(4);
Node n5 = new Node(5);
n1.next = n2;
n2.next = n3;
n3.next = n4;
n4.next = n5;
reversePrint(n1);
}
public static void reversePrint(Node head){
Stack p = new Stack(); //使用栈结构
while(head!=null){
p.push(head.val);//压入栈
head = head.next;
}
while(!p.empty()){
System.out.println(p.lastElement());//打印栈顶元素
p.pop();//移除
}
}
public static class Node{
int val;
Node next;
public Node(int val){
this.val = val;
}
}
}