【九度OJ1511】|【剑指offer5】从尾到头打印链表

题目描述:

输入一个链表,从尾到头打印链表每个节点的值。

输入:

每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。

输出:

对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。

样例输入:

1
2
3
4
5
-1
样例输出:
5
4
3
2
1
方法一:
public class Main {

	Scanner s = new Scanner(System.in);
	public void add(){
		int value = 0;
		if((value = s.nextInt()) != -1){
			add();
		}
		if(value != -1)
			System.out.println(value);
	}
	public static void main(String[] args) {
		CopyOfMain m = new CopyOfMain();
		m.add();
	}

}
此种方法当链表非常长的时候,就会导致函数调用的层级很深,从而有可能导致函数调用栈溢出

方法二:

import java.util.Scanner;
import java.util.Stack;

public class Main {

	public static void main(String[] args) {
		Stack stack = new Stack();
		int value = 0;
		Scanner s = new Scanner(System.in);
		while((value = s.nextInt()) != -1){
			stack.push(value);
		}
		while(!stack.isEmpty()){
			System.out.println(stack.pop());
		}
	}

}

你可能感兴趣的:(java,九度,OJ1511,从尾到头打印链表,剑指offer5)