输入:每个输入文件仅包含一组测试样例。 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。当输入-1的时候,代表输入结束,反向打印出该链表
大一的时候学了c++,之后学了java,接触java感觉很懂东西都已经包装好了,比如就那本题目来说,如果用c++来写,我们还需要设置指针域,节点值,指向下一个节点的next指针,接触了java,发现直接用LinkedList就能完成,我也在想,现在很多公司算法题目都要气用c或则c++进行实现,java学多了让我越来越找不到那种接触底层真正的算法实现。
不吹了,java代码献上。
Linked
package com.lb.test;
import java.util.LinkedList;
import java.util.Scanner;
public class List {
public static void main(String[] args) {
/*
* 题目描述:
* 输入一个链表,从尾到头打印链表每个节点的值。
* 输入:
* 每个输入文件仅包含一组测试样例。
* 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。
* 输出:
* 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。
*/
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
LinkedList<Integer> list = new LinkedList<Integer>();
int listValue;
while((listValue = in.nextInt())!=-1){
list.add(listValue);
}
int listLength = list.size();
for(int i = listLength-1;i>=0;--i){
System.out.println(list.get(i));
}
}
}
List底层采用链表实现,至于怎么实现的我没看过源码,只知道“拿来主义”,可以支持随机存取。