您的位置:首页 > Web前端

剑指offer:从尾到头打印链表(java)

2016-09-29 10:23 363 查看
一般来说,我们会想到链表逆置,然后再从头打印,但这样会改变链表结构,如果面试官认可的话,则可以,否则还要更简便的方法。

1、使用栈  

/**
* 从尾到头打印链表
* @param root
*/
public static void printReverseList(ListNode root){
if(root==null) return;
ListNode node = root;
Stack<ListNode> stack = new Stack<ListNode>();
while(node!=null){
stack.push(node);
node = node.next;
}
while(!stack.isEmpty()){
int val = stack.pop().val;
System.out.print(val+" ");
}
}


2、递归,但当链表非常长的时候,就会导致函数调用层级过深,从而导致函数调用栈溢出。

/**
* 递归写法
* @param root
*/
public static void printReverseListRecursive(ListNode root){
if(root==null) return;
if(root.next!=null)
printReverseList(root.next);
System.out.print(root.val+" ");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息