您的位置:首页 > Web前端

《剑指offer》005-从尾到头打印链表

2017-03-21 09:49 330 查看
显式用栈和非显式用栈(递归)代码:

import java.util.Stack;
class ListNode{
int val;
ListNode next;
ListNode(int i){
this.val = i;
}
}
public class ReversePrint{
public static void main(String[] args){
ReversePrint r = new ReversePrint();
ListNode node = new ListNode(0);
ListNode tmp = node;
for(int i = 1; i < 100; i++){
ListNode now = new ListNode(i);
tmp.next = now;
tmp = now;
}
tmp.next = null;
r.reversePrint(node);
System.out.println();
r.reversePrint2(node);
}
private void reversePrint(ListNode node){
Stack<ListNode> s = new Stack<ListNode>();
ListNode tmp = node;
while(tmp != null){
s.push(tmp);
tmp = tmp.next;
}
while(!s.isEmpty()){
System.out.print(s.pop().val + " ");
}
}
private void reversePrint2(ListNode node){
if(node != null){
if(node.next != null){
reversePrint2(node.next);
}
System.out.print(node.val + " ");
}
}
}


当链表非常长时,就会导致函数调用的层级很深,可能导致函数调用栈溢出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: