-
题目描述:
-
输入一个链表,从尾到头打印链表每个节点的值。
-
输入:
-
每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。
-
输出:
-
对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。
-
样例输入:
-
1 2 3 4 5 -1
-
样例输出:
-
5 4 3 2 1
这里采用递归打印的方法。
package jzoffer;
import java.util.Scanner;
public class ListTest {
public static void main(String[] args) {
boolean status = true;
Scanner sc = new Scanner(System.in);
ListNoder head = null; //创建一个头结点这样方便遍历
ListNoder temp = null; //每次用临时节点代替头结点指向去遍历遮掩很方便的
while(sc.hasNextInt()){
int m = sc.nextInt();
if(m == -1){
break; //这里是我们在控制台的结束标记,输入-1即代表我们输入结束
}
ListNoder LSM = new ListNoder(m);//这里初始化一个节点,增加节点
if(head == null){ //先判断我们的头节点是否null,如果为空的话,我们将上面初始化的一个节点给他
head = LSM;
status = false; //status的作用在这里
}else{
status = true;
}
if(status){
temp = head;
while(temp.next != null){
temp = temp.next;//如果temp指向的下一个为不为null的话,那我们就让他继续往下指,直到找到一个为null的将初始化的节点赋值给temp
}
temp.next = LSM;
}
}
print_list(head); //调用递归方法倒叙输出
}
public static void addList(int m){
}
public static void print_list(ListNoder listNoder ){
if(listNoder != null){
if(listNoder.next != null){
print_list(listNoder.next);
}
System.out.println(listNoder.data);
}
}
}
class ListNoder{
int data;
ListNoder next = null;
public ListNoder(int k){
data = k;
}
}